Spostare con il mouse un rettangolo in una DrawingArea

Da Gambas-it.org - Wikipedia.
Versione del 27 nov 2021 alle 17:02 di Vuott (Discussione | contributi) (Creata pagina con "Nel seguente esempio si potrà spostare con il mouse sulla superficie di una ''DrawingArea'' un rettangolo (o un quadrato) precedentemente disegnato. <BR>In particolare durant...")

(diff) ← Versione meno recente | Versione attuale (diff) | Versione più recente → (diff)

Nel seguente esempio si potrà spostare con il mouse sulla superficie di una DrawingArea un rettangolo (o un quadrato) precedentemente disegnato.
In particolare durante lo spostamento del rettangolo il puntatore del mouse resterà laddove si è cliccato all'interno del rettangolo.
Si farà uso delle risorse della Classe "Rect" per operare idealmente sul rettangolo che sarà disegnato e spostato sulla DrawingArea.

Private rc As Rect
Private spx As Short
Private spy As Short

Public Sub _new()

' Viene creato un Oggetto del tipo "Rect", quale rettangolo ideale i cui parametri saranno passati al Metodo ".Rectangle()" della "DrawingArea" per il disegno effettivo del quadrilatero:
 rc = New Rect((DrawingArea1.W / 2) - 20, (DrawingArea1.H / 2) - 10, 40, 20)

End

Public Sub DrawingArea1_MouseDown()

 With rc
   If Not .Contains(Mouse.X, Mouse.Y) Then Return 
   spx = Mouse.X - .X
   spy = Mouse.Y - .Y
 End With 

End

Public Sub DrawingArea1_MouseMove()

 With rc
   If Not .Contains(Mouse.X, Mouse.Y) Then Return 
   .X = Mouse.X - spx
   .Y = Mouse.Y - spy
 End With 
 DrawingArea1.Refresh
 
End

Public Sub DrawingArea1_Draw()

 With Paint
   .Brush = .Color(Color.Red)
   .Rectangle(rc.X, rc.Y, rc.W, rc.H, 0)
   .Fill
   .End
 End With

End