Spostare con il mouse senza Drag&Drop un'immagine caricata in una DrawingArea
Da Gambas-it.org - Wikipedia.
Mostriamo un possibile codice per spostare con il mouse senza le risorse del Drag&Drop all'interno di una DrawingArea un'immagine caricata da un file immagine. Durante lo spostamento si manterrà il puntatore del mouse premuto nel punto dell'immagine, ove si è cliccato. [nota 1]
Va chiarito che non si farà uso di una PictureBox, per mostrare l'immagine se caricata da un file, né si avrà lo spostamento della DrawingArea sul Form, bensì si avrà lo spostamento del disegno dell'immagine sulla superficie della DrawingArea !
Private DrawingArea1 As DrawingArea Private im As Image Private rc As Rect Private x As Short Private y As Short Public Sub Form_Open() With Me .W = Screen.AvailableWidth .H = Screen.AvailableHeight .Arrangement = Arrange.Fill End With With DrawingArea1 = New DrawingArea(Me) As "DrawingArea1" .Background = Color.Orange End With im = Image.Load("/percorso/del/file/immagine") End Public Sub Form_Arrange() ' Imposta un quadrilatero rettangolo ideale, adattato alle dimensioni dell'immagine caricata, che sarà usato per consentire di spostare l'immagine solo se si è cliccato al suo interno: rc = New Rect((DrawingArea1.W / 2) - (im.W / 2), (DrawingArea1.H / 2) - (im.H / 2), im.W, im.H) End Public Sub DrawingArea1_Draw() With Paint .DrawImage(im, rc.X, rc.Y, rc.W, rc.H, 1.0) .End End With End Public Sub DrawingArea1_MouseDown() With rc If Not .Contains(Mouse.X, Mouse.Y) Then Return x = Mouse.X - .X y = Mouse.Y - .Y End With End Public Sub DrawingArea1_MouseMove() With rc If Not .Contains(Mouse.X, Mouse.Y) Then Return .X = Mouse.X - x .Y = Mouse.Y - y End With With DrawingArea1 .Mouse = 18 .Refresh End With End Public Sub DrawingArea1_MouseUp() DrawingArea1.Mouse = Mouse.Default End
Note
[1] Vedere anche: Spostare con il mouse un rettangolo in una DrawingArea