Cursor?

Übersicht BlitzBasic Beginners-Corner

Neue Antwort erstellen

Megamag

Betreff: Cursor?

BeitragFr, Jan 25, 2008 18:15
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi, ich bin's noch mal...
Ich wollte einen Cursor haben, weiß aber nicht, wie.
Hier ist der Code:
Code: [AUSKLAPPEN]
Graphics 640,480,32,1

image=LoadImage("Cursor.bmp")

while not KeyHit(1)
DrawImage image,MouseX(),MouseY()
wend
end

Aber dan zeichnet das Programm einfach eine image nach der
anderen, ich möchte aber einen Cursor haben, der immer auf
Mausposition ist (da im Fullscreen irgendwie kein normaler
Cursor zu sehen ist...). Könnt ihr einem Anfänger noch einmal
helfen?
 

#Reaper

Newsposter

BeitragFr, Jan 25, 2008 18:20
Antworten mit Zitat
Benutzer-Profile anzeigen
Du musst nach dem Flippen (Flip, was du auch vergessen hast, und deshalb eigentlich nichts sehen solltest :-/ ) natürlich den Buffer wieder löschen. Das machst du einfach mit Cls.
Den normalen Cursor kannst du mit HideMouse() und ShowMouse() ausblenden bzw. wieder anzeigen lassen. Im Vollbildmodus wird der Cursor standartmäßig ausgeblendet.

PS: Verwende am besten immer Strict oder SuperStrict (ganz am Anfang des Quellcodes schreiben). Das zwingt dich dazu die Variablen ordentlich zu deklarieren, verhindert Probleme wegen z.B. doppelten Variablen (in Funktionen etc.) und zwingt dich allgemein dazu, deinen Code ordentlicher zu schreiben.
Wink
AMD Athlon 64 3500+, ATI AX800 Pro/TD, 2048 MB DRR 400 von Infineon, ♥RIP♥ (2005 - Juli 2015 -> sic!)
Blitz3D, BlitzMax, MaxGUI, Monkey X; Win7
  • Zuletzt bearbeitet von #Reaper am Fr, Jan 25, 2008 18:22, insgesamt einmal bearbeitet
 

ChristianK

BeitragFr, Jan 25, 2008 18:20
Antworten mit Zitat
Benutzer-Profile anzeigen
Entweder falsches Forum oder falscher Code. Das sieht mir nicht gerade nach BlitzMax aus.
Ist aber auch egal. Du musst Flip und Cls benutzen.
AdvanceLcd
Intel Core 2 Duo 3.2 GHz, 4 GB RAM, GeForce 8800 GTX | MacBook Pro 15,4″ Intel Core 2 Duo 2.4 GHz, 2 GB RAM, GeForce 8600M GT

Megamag

BeitragFr, Jan 25, 2008 18:27
Antworten mit Zitat
Benutzer-Profile anzeigen
Oh, das sollte eigentlich in BeginnersCorner von BlitzBasic rein.
Und wegen Cls. Wenn ich das benutze wird ja alles gezeichnete gelöscht.
Das will ich aber nicht. Denn ich habe ein paar Kreise auf dem Bild,
die da bleiben müssen.
 

ChristianK

BeitragFr, Jan 25, 2008 18:30
Antworten mit Zitat
Benutzer-Profile anzeigen
Normalerweise wird alles (!) in jedem Schleifendurchlauf neu gezeichnet.
AdvanceLcd
Intel Core 2 Duo 3.2 GHz, 4 GB RAM, GeForce 8800 GTX | MacBook Pro 15,4″ Intel Core 2 Duo 2.4 GHz, 2 GB RAM, GeForce 8600M GT

Megamag

BeitragFr, Jan 25, 2008 20:07
Antworten mit Zitat
Benutzer-Profile anzeigen
und wie?
 

ChristianK

BeitragFr, Jan 25, 2008 20:23
Antworten mit Zitat
Benutzer-Profile anzeigen
Du hast doch selber gesagt, dass du schon ein paar Kreise gezeichnet hast. Und anstatt sie vor dem Mainloop zu zeichnen, packst du die Befehle halt in die Schleife mit rein.
AdvanceLcd
Intel Core 2 Duo 3.2 GHz, 4 GB RAM, GeForce 8800 GTX | MacBook Pro 15,4″ Intel Core 2 Duo 2.4 GHz, 2 GB RAM, GeForce 8600M GT

The_Nici

BeitragFr, Jan 25, 2008 21:49
Antworten mit Zitat
Benutzer-Profile anzeigen
Blitz4D, du hast wies aussieht das Prinzip von Schleifen noch nicht begriffen.
Du solltest dir mal www.robsite.de zu Herzen nehmen...

Im gegensatz zu B3D muss man in 2D alles neu zeichnen. Eigentlich füllst du in 2D nur ein Raster mit Pixel, welches nur ganz gelöscht werden kann.

Um Übersicht zu behalten, was du wo zeichnest, kannst du dir eine Funktion machen, in der du alles zeichnest. die führst du dann im Mainloop vor Flip aus.

Code: [AUSKLAPPEN]

Function DrawAll()
   DrawImage bild1,0,0
   DrawImage bild2,10,10
   Rect 100,100,32,32
End Function

Dann in der Mainloop
Code: [AUSKLAPPEN]

While not Keydown(1)
   einevariable=einevariable+1
   DrawAll()
   Text 0,0,"Bliblablu, ich esse eine Kuh!"
   Flip
   Cls
Wend
End


Lerne bitte auch einzurücken. So behält man die Übersicht.

Megamag

BeitragSo, Jan 27, 2008 13:23
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich habe mich etwas falsch ausgedrückt.
Ich möchte einen Raum haben, in dem man
eine Form zeichnen muss. Der PC checkt dann,
ob die richtig gezeichnet war. Und ich habe das so
gemacht. Erster Schritt:
Code: [AUSKLAPPEN]

Graphics 640,480,32,1

While Not KeyHit(1)

While MouseDown(1)
 Oval MouseX(),MouseY(),10,10,True
Wend

Wend
End

Und wenn ich dann Cls nehme, kriege ich das gezeichnete
nicht wieder auf den Bildschirm, es sei denn man malt es neu.

The_Nici

BeitragSo, Jan 27, 2008 13:31
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich würde ein Image erstellen, in das du mit dem imagebuffer reinzeichnest. (Es lebe der Imagebuffer!)

Code: [AUSKLAPPEN]

Graphics 800,600,0,2
Setbuffer Backbuffer()
imitsch=CreateImage(800,600)
While not Keydown(1)
   md=MouseDown(1)
   If MouseDown(1) then
      Setbuffer ImageBuffer(imitsch)
      Oval MouseX(),MouseY(),32,32
      Setbuffer Backbuffer()
   EndIf
   Drawimage imitsch,0,0
   Flip
   Cls
Wend
End


MfG

Megamag

BeitragSo, Jan 27, 2008 13:40
Antworten mit Zitat
Benutzer-Profile anzeigen
Okay, danke.
Gibt es eine möglichkeit oder sogar eine Funktion, die
berechnet, wieviele images da sind, und wieviel Prozent
davon auf einer Bestimmten Fläche liegen. Anders könnte
ich mir keine Image-Erkennung vorstellen. Geht das mit Types?

skey-z

BeitragSo, Jan 27, 2008 13:54
Antworten mit Zitat
Benutzer-Profile anzeigen
Also diese Funktion musst du dir selber schreiben, habe bisher noch nicht gehört, dass es jemand gebraucht hätte.

Mit types ginge es, ist aber auch für einen Anfänger ein heikles thema, da es nicht gerade einfach ist.

hier mal nen anfang, wie du es machen könntest.

Code: [AUSKLAPPEN]

Type T_img
   Field img
   field x, y
end Type

;-----------------

Function Check(x,y,width, height)

   for img.T_img = each T_img

      if rectoverlap(img\x, img\y, imagewidth(img\img), imageheight(img\img, x, y, width, height) then
         over = over + 1
      endif

      return over
   next
end function


Code nicht getestet, nur mal so als denkanstoß

schau mal was du daraus machen kannst

mfg
Awards:
Coffee's Monatswettbewerb Feb. 08: 1. Platz
BAC#57: 2. Platz
Twitter

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group