Spostare con il mouse senza Drag&Drop un'immagine caricata in una DrawingArea
Vai alla navigazione
Vai alla ricerca
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
.Move(0, 0, Screen.AvailableWidth, 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()
Paint.DrawImage(im, rc.X, rc.Y, rc.W, rc.H, 1.0)
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