 |
Das deutsche QBasic- und FreeBASIC-Forum Für euch erreichbar unter qb-forum.de, fb-forum.de und freebasic-forum.de!
|
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
Duffman
Anmeldungsdatum: 20.07.2007 Beiträge: 7
|
Verfasst am: 01.12.2007, 18:32 Titel: Mauszeiger ändern |
|
|
hi,
ich möchte bei einem freebasic programm einen eigenen Mauszeiger verwenden. Ich hab im Forum auch schon weng gesucht und bin auf diesen thread gestoßen:
http://forum.qbasic.at/viewtopic.php?t=1321&highlight=mausfarbe
Kann mir jemand erklären, wie man mit put TRANS einen eigenen Mauszeiger macht?
Danke |
|
Nach oben |
|
 |
AndT
Anmeldungsdatum: 02.04.2007 Beiträge: 481
|
Verfasst am: 01.12.2007, 18:49 Titel: |
|
|
Erst mal mit Paint ein neues Bild erstellen und den Hintergrund Pink machen, dann das Bild auf 32x32 Pixel setzen und den Courser zeichen.
Das erste Pixel (oben links) ist exakt die stelle wo dann der Courser steht.
Dieses bild wird dann als "courser.bmp"
24-bit farben Bitmap(BMP)
gespeichert.
Ein dazu passender Code:
Code: | screenres 800,600,32
dim as integer mx,my
dim as any ptr courser = IMAGECREATE (32,32)
BLOAD "courser.bmp",courser
setmouse ,,0
do
getmouse mx,my
put (mx,my),courser,trans
loop until multikey(&h01) |
Transperens mit Trans geht aber iwie nicht ?!? _________________ Bis irgendwann... 
Zuletzt bearbeitet von AndT am 01.12.2007, 19:10, insgesamt einmal bearbeitet |
|
Nach oben |
|
 |
Duffman
Anmeldungsdatum: 20.07.2007 Beiträge: 7
|
Verfasst am: 01.12.2007, 19:09 Titel: |
|
|
Danke für die schnelle antwort!!!
Funktioniert wunderbar.
Edit:
Bei mir geht Transparenz. |
|
Nach oben |
|
 |
Jojo alter Rang

Anmeldungsdatum: 12.02.2005 Beiträge: 9736 Wohnort: Neben der Festplatte
|
Verfasst am: 01.12.2007, 19:27 Titel: |
|
|
...natürlich muss der mauszeiger jedesmal auch wieder entfernt werdne, indem eine fläche von der größe des mauszeigers geGETet wird, dann der mauszeiger draufgepappt wird und beim bewegen der maus das alte bild wieder dorthin gePUTet wird.
außerdem heißt es cursor, nicht courser...  _________________ » Die Mathematik wurde geschaffen, um Probleme zu lösen, die es nicht gäbe, wenn die Mathematik nicht erschaffen worden wäre.
 |
|
Nach oben |
|
 |
AndT
Anmeldungsdatum: 02.04.2007 Beiträge: 481
|
Verfasst am: 01.12.2007, 19:51 Titel: |
|
|
Code: | SCREENRES 800,600,16
DIM AS INTEGER mx,my
DIM AS ANY PTR cursor = IMAGECREATE (32,32)
DIM AS ANY PTR aktgfx = IMAGECREATE (65,65) 'aktuelle grafik auf Bildschirm
BLOAD "cursor.bmp",cursor
SETMOUSE ,,0
DO
GETMOUSE mx,my
PUT (mx,my),aktgfx
GET (mx-32,my-32)-(mx+32,my+32),aktgfx
PUT (mx,my),cursor,TRANS
LOOP UNTIL MULTIKEY(&h01)
|
Verhält sich irgendwie merkwürdig  _________________ Bis irgendwann...  |
|
Nach oben |
|
 |
Jojo alter Rang

Anmeldungsdatum: 12.02.2005 Beiträge: 9736 Wohnort: Neben der Festplatte
|
Verfasst am: 01.12.2007, 20:02 Titel: |
|
|
...
Code: |
Dim As integer mx,my
Dim As Integer OldX = -1, OldY = -1
Do
getmouse mx,my
if oldx <> mx or oldy <> my then
if oldx >= 0 then put(oldx,oldy), hintergrund, pset
if mx >= 0 then
get(mx,my)-(mx+CURSORGROESSE,my+CURSORGROESSE), hintergrund
put(mx,my), cursor, trans
end if
end if
oldx = mx
oldy = my
loop
|
sollte funzen...
logisch nachdenken, falls nicht nachvollziehbar oder der code nicht funzt... _________________ » Die Mathematik wurde geschaffen, um Probleme zu lösen, die es nicht gäbe, wenn die Mathematik nicht erschaffen worden wäre.
 |
|
Nach oben |
|
 |
AndT
Anmeldungsdatum: 02.04.2007 Beiträge: 481
|
Verfasst am: 01.12.2007, 22:36 Titel: |
|
|
Bitte sehr
So sieht mein Code aus.. Perfekt
//Edit:
Kleinere Bugs sind noch drin..
Code: | screenres 800,600,32
DIM AS ANY PTR cursor = IMAGECREATE (33,33)
DIM AS ANY PTR BILDPUFFER = IMAGECREATE (33,33)
dim as integer CG = 32
BLOAD "cursor.bmp",cursor
DIM AS INTEGER mx,my,sc
DIM AS INTEGER omx=320,omy=240
cls
setmouse 100,100,0
'testhintergrund
for x as integer = 0 to 800 step 16
for y as integer = 0 to 600 step 16
line(x,y)-(x+16,y+16),rgb(INT(RND*256),123,123),bf
next
next
GETMOUSE mx,my,sc
get(mx,my)-(mx+CG,my+CG),bildpuffer
DO
GETMOUSE mx,my,sc
' BildPuffer Holen
IF omx <> mx or omy <> my THEN
PUT(omx,omy), bildpuffer, PSET
get(mx,my)-(mx+cg,my+cg),bildpuffer
end if
put (mx,my),cursor,trans
sleep 1
if mx+cg > 800 or my+cg > 600 then sc=-1
if sc > -1 then
omx = mx
omy = my
end if
LOOP until multikey(&h01)
sleep |
_________________ Bis irgendwann...  |
|
Nach oben |
|
 |
Jojo alter Rang

Anmeldungsdatum: 12.02.2005 Beiträge: 9736 Wohnort: Neben der Festplatte
|
Verfasst am: 01.12.2007, 23:17 Titel: |
|
|
AndT hat Folgendes geschrieben: | Bitte sehr
So sieht mein Code aus.. Perfekt  |
ja, du bsit der beste coder aller zeiten, alle deine sourcecodes sind grandios, perfekt und fehlerfrei... _________________ » Die Mathematik wurde geschaffen, um Probleme zu lösen, die es nicht gäbe, wenn die Mathematik nicht erschaffen worden wäre.
 |
|
Nach oben |
|
 |
Dusky_Joe

Anmeldungsdatum: 07.01.2005 Beiträge: 1007 Wohnort: Regensburg/Oberpfalz
|
Verfasst am: 07.12.2007, 19:01 Titel: |
|
|
Und bitte nicht vergessen, den Speicher für den Mauszeiger beim Beenden wieder frei zu geben! Stichwort: ImageDestroy.
ImageCreate reserviert ebenso wie Allocate einen Speicherbereich, der vom System nicht mehr angetastet werden kann, und nach Beendigung des Programms auch nicht automatisch frei gegeben wird.
Der Programmierer muss also selbst dafür sorgen, dass der Speicher wieder so hinterlassen wird, wie er vorgefunden wurde. Dazu fügt man am Ende der Maus-Routine ein simples
ImageDestroy BildPuffer
ImageDestroy Cursor
Siehe dazu auch die Einträge in der Befehlsreferenz:
ImageDestroy
ImageDestroy
Allocate
DeAllocate _________________ fully biological degradable
Once, the big wave arrives, you've got two ways, you can go:
Either, you ride it, or you don't do.
But, if you don't ride, you'll never know wether you'd have gone wet. |
|
Nach oben |
|
 |
volta
Anmeldungsdatum: 04.05.2005 Beiträge: 1876 Wohnort: D59192
|
Verfasst am: 11.12.2007, 17:29 Titel: |
|
|
Hi,
wer den Mauszeiger unter Windows (Win bietet schon einige unterschiedliche Mauscursor an) im fbgfx-Fenster ändern möchte siehe:
http://www.freebasic-portal.de/index.php?s=code&id=98 _________________ Warnung an Choleriker:
Dieser Beitrag kann Spuren von Ironie & Sarkasmus enthalten.
Zu Risiken & Nebenwirkungen fragen Sie Ihren Therapeuten oder Psychiater. |
|
Nach oben |
|
 |
AndT
Anmeldungsdatum: 02.04.2007 Beiträge: 481
|
Verfasst am: 02.01.2008, 18:13 Titel: |
|
|
Bug im Forum hat Folgendes geschrieben: | RGB(255, 163, 79);">cursor |
Was bitte soll das?
Einmal Aktuellisiert und dann wars wieder normal  _________________ Bis irgendwann...  |
|
Nach oben |
|
 |
Jojo alter Rang

Anmeldungsdatum: 12.02.2005 Beiträge: 9736 Wohnort: Neben der Festplatte
|
Verfasst am: 02.01.2008, 18:47 Titel: |
|
|
du hast es erfasst in deinem quote. es ist ein bug im forum. ja. das bedeutet es.  _________________ » Die Mathematik wurde geschaffen, um Probleme zu lösen, die es nicht gäbe, wenn die Mathematik nicht erschaffen worden wäre.
 |
|
Nach oben |
|
 |
|
|
Du kannst keine Beiträge in dieses Forum schreiben. Du kannst auf Beiträge in diesem Forum nicht antworten. Du kannst deine Beiträge in diesem Forum nicht bearbeiten. Du kannst deine Beiträge in diesem Forum nicht löschen. Du kannst an Umfragen in diesem Forum nicht mitmachen.
|
|