Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht Das deutsche QBasic- und FreeBASIC-Forum
Für euch erreichbar unter qb-forum.de, fb-forum.de und freebasic-forum.de!
 
FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen  RegistrierenRegistrieren
ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin
Zur Begleitseite des Forums / Chat / Impressum
Aktueller Forenpartner:

Mauszeiger ändern

 
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Allgemeine Fragen zu FreeBASIC.
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
Duffman



Anmeldungsdatum: 20.07.2007
Beiträge: 7

BeitragVerfasst am: 01.12.2007, 18:32    Titel: Mauszeiger ändern Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden
AndT



Anmeldungsdatum: 02.04.2007
Beiträge: 481

BeitragVerfasst am: 01.12.2007, 18:49    Titel: Antworten mit Zitat

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... grinsen


Zuletzt bearbeitet von AndT am 01.12.2007, 19:10, insgesamt einmal bearbeitet
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Duffman



Anmeldungsdatum: 20.07.2007
Beiträge: 7

BeitragVerfasst am: 01.12.2007, 19:09    Titel: Antworten mit Zitat

Danke für die schnelle antwort!!!
Funktioniert wunderbar.

Edit:
Bei mir geht Transparenz.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Jojo
alter Rang


Anmeldungsdatum: 12.02.2005
Beiträge: 9736
Wohnort: Neben der Festplatte

BeitragVerfasst am: 01.12.2007, 19:27    Titel: Antworten mit Zitat

...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... mit den Augen rollen
_________________
» Die Mathematik wurde geschaffen, um Probleme zu lösen, die es nicht gäbe, wenn die Mathematik nicht erschaffen worden wäre.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
AndT



Anmeldungsdatum: 02.04.2007
Beiträge: 481

BeitragVerfasst am: 01.12.2007, 19:51    Titel: Antworten mit Zitat

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 mit den Augen rollen
_________________
Bis irgendwann... grinsen
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Jojo
alter Rang


Anmeldungsdatum: 12.02.2005
Beiträge: 9736
Wohnort: Neben der Festplatte

BeitragVerfasst am: 01.12.2007, 20:02    Titel: Antworten mit Zitat

...
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
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
AndT



Anmeldungsdatum: 02.04.2007
Beiträge: 481

BeitragVerfasst am: 01.12.2007, 22:36    Titel: Antworten mit Zitat

Bitte sehr
So sieht mein Code aus.. Perfekt zwinkern
//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... grinsen
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Jojo
alter Rang


Anmeldungsdatum: 12.02.2005
Beiträge: 9736
Wohnort: Neben der Festplatte

BeitragVerfasst am: 01.12.2007, 23:17    Titel: Antworten mit Zitat

AndT hat Folgendes geschrieben:
Bitte sehr
So sieht mein Code aus.. Perfekt zwinkern

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
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Dusky_Joe



Anmeldungsdatum: 07.01.2005
Beiträge: 1007
Wohnort: Regensburg/Oberpfalz

BeitragVerfasst am: 07.12.2007, 19:01    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden
volta



Anmeldungsdatum: 04.05.2005
Beiträge: 1876
Wohnort: D59192

BeitragVerfasst am: 11.12.2007, 17:29    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
AndT



Anmeldungsdatum: 02.04.2007
Beiträge: 481

BeitragVerfasst am: 02.01.2008, 18:13    Titel: Antworten mit Zitat

Bug im Forum hat Folgendes geschrieben:
RGB(255, 163, 79);">cursor

Was bitte soll das?
Einmal Aktuellisiert und dann wars wieder normal happy
_________________
Bis irgendwann... grinsen
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Jojo
alter Rang


Anmeldungsdatum: 12.02.2005
Beiträge: 9736
Wohnort: Neben der Festplatte

BeitragVerfasst am: 02.01.2008, 18:47    Titel: Antworten mit Zitat

du hast es erfasst in deinem quote. es ist ein bug im forum. ja. das bedeutet es. mit den Augen rollen
_________________
» Die Mathematik wurde geschaffen, um Probleme zu lösen, die es nicht gäbe, wenn die Mathematik nicht erschaffen worden wäre.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Allgemeine Fragen zu FreeBASIC. Alle Zeiten sind GMT + 1 Stunde
Seite 1 von 1

 
Gehe zu:  
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.

 Impressum :: Datenschutz