Problem mit Maus- und Canvas- Koordinaten

Übersicht BlitzBasic BlitzPlus

Neue Antwort erstellen

 

Xenowa

Betreff: Problem mit Maus- und Canvas- Koordinaten

BeitragDi, Aug 08, 2006 11:18
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo, ich habe da folgendes Problem: ich möchte mit BlitzPlus die Mauskoordinaten mit einer Canvasecke vergleichen.

Code: [AUSKLAPPEN]


;Hier wird abgefragt ob die Taste gedrückt ist, und dann der Wert Mit MouseX(Canvas) übergeben.
;---
MausTaste = GetMouse()   
if MausTaste = 1 Then MausPosition(MouseX(TileSetAnsicht), MouseY(TileSetAnsicht))
;---
;Und hier werden die Ränder des Canvas abgespeichert und nacher mit den Mauskoordinaten verglichen
;---
TileCanvasOben = GadgetX(TileSetAnsicht)
TileCanvasUnten = GadgetX(TileSetAnsicht) + GadgetWidth(TileSetAnsicht)
TileCanvasLinks = GadgetY(TileSetAnsicht)
TileCanvasRechts = GadgetY(TileSetAnsicht) + GadgetHeight(TileSetAnsicht)
If MausX >= TileCanvasLinks And MausX <= TileCanvasRechts And MausY >= TileCanvasOben And MausY <= TileCanvasUnten Then ;irgendwas
EndIf


Mit dieser funktion ist doch genau der fall abgedeckt, wenn die Maus sich innerhalb des Canvasfeldes befindet, oder irre ich mich da? Jedenfalls funktioniert es bei mir überhaupt nicht, ich kann zum teil mehrere cm in das Canvas hineinfahren, und es passiert nichts. Ich hoffe ihr könnt mir weiterhelfen.

Dante

BeitragDi, Aug 08, 2006 11:25
Antworten mit Zitat
Benutzer-Profile anzeigen
hmm einfach MouseX(Canvas) und MouseY(Canvas)
dann sollte es klappen^^

Edit: Und die Einmklammerung durch die Bedingungen sollten dann auch Überflüssig sein

MfG

Cardonic

BeitragDi, Aug 08, 2006 11:29
Antworten mit Zitat
Benutzer-Profile anzeigen
Vielleicht hilft dir das was : Code: [AUSKLAPPEN]
Window = CreateWindow("",0,0,800,600,0,1)

Label  = CreateLabel("",10,10,ClientWidth(Window)-20,20,Window,1)

Canvas = CreateCanvas(10,40,ClientWidth(Window)-20,ClientHeight(Window)-50,Window)

Repeat

   Select WaitEvent()
      Case $203
         If EventSource() = Canvas Then
            SetGadgetText Label,EventX()+" : "+EventY()
         EndIf
      Case $803
         End
   End Select

Forever


mfg Cardonic
If you should go skating on the thin ice of modern life, dragging behind you the silent reproach of a million tear-stained eyes, don't be surprised when a crack in the ice appears under your feet.
 

Xenowa

BeitragDi, Aug 08, 2006 11:54
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich habe jetzt in den Code (von Cardonic) noch dashier reinkopiert:

Code: [AUSKLAPPEN]

Window = CreateWindow("",0,0,800,600,0,1)

Label  = CreateLabel("",10,10,ClientWidth(Window)-20,20,Window,1)

Canvas = CreateCanvas(10,40,ClientWidth(Window)-20,ClientHeight(Window)-50,Window)

------->SetBuffer CanvasBuffer(Canvas)

Repeat

   Select WaitEvent()
      Case $203
         If EventSource() = Canvas Then
            SetGadgetText Label,EventX()+" : "+EventY()
            ------->Cls
            ------->Rect GadgetX(Canvas), GadgetY(Canvas), Ceil(EventX() / 32) * 32, Ceil(EventY() / 32) * 32
            ------->FlipCanvas(Canvas)
         EndIf
      Case $803
         End
   End Select

Forever



Und das ergebnis ist immernoch, dass das Rechteck so komisch verschoben, also nicht von der Ecke des Canvas an (Was ja das Gadget(X) eigetlich definiert), gezeichnet wird.


Edit: Ok jetzt ists klar: Wenn ich den buffer auf das canvas setzte werden von diesen koordinaten automatisch asgegangen ... -_- Danke, problem gelöst

Neue Antwort erstellen


Übersicht BlitzBasic BlitzPlus

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group