mouse position inside canvas
BlitzMax Forums/MaxGUI Module/mouse position inside canvas
| ||
Hi ! Is there a method to have the mouse position inside a canvas if you not move the mouse or interact with it. (the mouse pointer is just on the canvas) ? Thanks ! |
| ||
I'm at the work at the moment, but if I remember a canvas should emitt (if setted with EVENT_MOUSEMOVE) an event, and then you can read the result with EventX() EventY() |
| ||
i'm ok with this, it's maybe a stupid question. But do you must store the mouse coord in you own variables (for example mx = eventx() and my=eventy()). Because if the mouse not move, not event is generated for the mouse so you can't check eventx() or eventy() !?! in fact to move an object on the screen i need to determine deltax and deltay, (how many pixels mouse moved from last position) |
| ||
yes, store them. I typically use ex and ey. |
| ||
How to determine dx and dy ? (how many pixels mouse moved from last position) Where reinit dx=0,dy=0 when the mouse doesn't move ? Thanks to help me ! Strict Global Win2:TGadget = CreateWindow("",(GadgetWidth(Desktop())-540)/2,(GadgetHeight(Desktop())-650)/2,540,650,Null,WINDOW_MENU|WINDOW_TITLEBAR) Global Panel_choix_map : Tgadget = CreatePanel (0,0,700,40, Win2) Global Canvas2:TGadget= CreateCanvas(10,50,512,512,Win2) ' ------------------------------------------------------------------------------------------- Global mx, my Global dx, dy Global Timer:TTimer = CreateTimer(60) While WaitEvent() Select EventID() Case EVENT_MOUSEMOVE dx = mx - EventX() dy = my = EventY() mx = EventX() my = EventY() Case EVENT_TIMERTICK SetGraphics CanvasGraphics(Canvas2) Cls SetColor 255,255,255 DrawOval mx-2,my-2,2,2 DrawText String Int(mx) + "," + String (Int(my)), mx,my DrawText "dx=" + String Int(dx) + ",dy=" + String (Int(dy)), mx,my + 16 Flip Case EVENT_WINDOWCLOSE Exit End Select Wend |
| ||
Thanks for your help. Finaly i have coded this. It's ok for my game editor.Strict Global Win2:TGadget = CreateWindow("",(GadgetWidth(Desktop())-540)/2,(GadgetHeight(Desktop())-650)/2,540,650,Null,WINDOW_MENU|WINDOW_TITLEBAR) Global Panel_choix_map : Tgadget = CreatePanel (0,0,700,40, Win2) Global Canvas2:TGadget= CreateCanvas(10,50,512,512,Win2) Global cerclex=100 Global Cercley=100 ' ------------------------------------------------------------------------------------------- Global mx, my Global dx, dy Global ox, oy Global bDeplacer = False Global Timer:TTimer = CreateTimer(60) While WaitEvent() Select EventID() Case EVENT_MOUSEDOWN ox = mx oy = my Case EVENT_MOUSEUP ox = 0 oy = 0 Case EVENT_MOUSEMOVE mx = EventX() my = EventY() If ox <> 0 And oy <> 0 Then dx = ox - mx dy = oy - my ox = mx oy = my Else dx = 0 dy = 0 End If CercleX = CercleX - dx CercleY = CercleY - dy Case EVENT_TIMERTICK SetGraphics CanvasGraphics(Canvas2) Cls SetColor 255,255,255 DrawOval mx-2,my-2,2,2 DrawText String Int(mx) + "," + String (Int(my)), mx,my DrawText "dx=" + String Int(dx) + ",dy=" + String (Int(dy)), mx,my + 16 DrawOval CercleX - 50, CercleY - 50,100,100 Flip 0 Case EVENT_WINDOWCLOSE Exit End Select Wend |