Differenze tra le versioni di "Spostare con il mouse un'immagine caricata in una DrawingArea"

Da Gambas-it.org - Wikipedia.
 
Riga 8: Riga 8:
 
   
 
   
 
   
 
   
  '''Public''' Sub Form_Open()
+
  Public Sub Form_Open()
 
   
 
   
 
   With Me
 
   With Me
Riga 20: Riga 20:
 
   End With
 
   End With
 
   
 
   
   im = Image.Load("<FONT Color=gray>''/percorso/del/file/immagine''</font>")
+
   im = Image.Load("<FONT Color=darkgreen>''/percorso/del/file/immagine''</font>")
 
   
 
   
  '''End'''
+
  End
 
   
 
   
  '''Public''' Sub Form_Arrange()
+
   
 +
Public Sub Form_Arrange()
 
   
 
   
 
   <FONT Color=gray>' ''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:''</font>
 
   <FONT Color=gray>' ''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:''</font>
 
   rc = New Rect((DrawingArea1.W / 2) - (im.W / 2), (DrawingArea1.H / 2) - (im.H / 2), im.W, im.H)
 
   rc = New Rect((DrawingArea1.W / 2) - (im.W / 2), (DrawingArea1.H / 2) - (im.H / 2), im.W, im.H)
 
   
 
   
  '''End'''
+
  End
 
   
 
   
  '''Public''' Sub DrawingArea1_Draw()
+
   
 +
Public Sub DrawingArea1_Draw()
 
    
 
    
 
   With Paint
 
   With Paint
Riga 38: Riga 40:
 
   End With
 
   End With
 
    
 
    
  '''End'''
+
  End
 
    
 
    
  '''Public''' Sub DrawingArea1_MouseDown()
+
   
 +
Public Sub DrawingArea1_MouseDown()
 
    
 
    
 
   With rc
 
   With rc
Riga 48: Riga 51:
 
   End With
 
   End With
 
    
 
    
  '''End'''
+
  End
 
    
 
    
  '''Public''' Sub DrawingArea1_MouseMove()
+
   
 +
Public Sub DrawingArea1_MouseMove()
 
    
 
    
 
   With rc
 
   With rc
Riga 62: Riga 66:
 
   End With
 
   End With
 
    
 
    
  '''End'''
+
  End
 +
 
   
 
   
  '''Public''' Sub DrawingArea1_MouseUp()
+
  Public Sub DrawingArea1_MouseUp()
 
    
 
    
 
   DrawingArea1.Mouse = Mouse.Default
 
   DrawingArea1.Mouse = Mouse.Default
 
    
 
    
  '''End'''
+
  End
  
  

Versione attuale delle 14:59, 27 giu 2024

Mostriamo un possibile codice per spostare con il mouse 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, 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