Creare, spostare e distruggere un'immagine in una DrawingArea

Da Gambas-it.org - Wikipedia.
Versione del 19 giu 2023 alle 16:52 di Vuott (Discussione | contributi) (Creata pagina con "Mostriamo un possibile codice per creare più immagini, spostare e distruggere delle immagini sulla ''DrawingArea''. <BR>Gli Oggetti di tipo ''Image'' creati sono assegnati a...")

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

Mostriamo un possibile codice per creare più immagini, spostare e distruggere delle immagini sulla DrawingArea.
Gli Oggetti di tipo Image creati sono assegnati a un vettore di tipo "Image[]".

Subito dopo la creazione di una singola immagine, mantenendo premuto il tasto di sinistra del mouse, e possibile spostarla sempre con il mouse sulla superficie della DrawingArea.
Cliccando invece con il tasto destro si distruggerà l'Oggetto Image contenuto nell'ultimo elemento corrente del vettore di tipo "Image[]".

Private im As Image
Private iimm As New Image[]
Private xx As New Short[]
Private yy As New Short[]


Public Sub Form_Open()

 im = New Image(16, 26, Color.Transparent, Image.Standard)

 With Paint
   .Begin(im)
   .Font.Size = 24
   .Brush = .Color(Color.Blue)
   .DrawText(String.Chr(&1d15f), 0, 14, 0, 0, Align.Center)
   .DrawText(String.Chr(&1d16e), 8, 14, 0, 0, Align.Center)
   .End
 End With

End

Public Sub DrawingArea1_MouseDown()

 If Mouse.Right Then 
   If iimm.Count > 0 Then
     iimm.Remove(iimm.Max)
     xx.Remove(xx.Max)
     yy.Remove(yy.Max)
   Else 
     Return 
   Endif
 Else
   xx.Push(Mouse.X)
   yy.Push(Mouse.Y - 24)
   iimm.Push(im)
 Endif

 DrawingArea1.Refresh

End

Public Sub DrawingArea1_MouseMove()

 If Mouse.Right Then Return 

 xx[xx.Max] = Mouse.X
 yy[yy.Max] = Mouse.Y - 24

 DrawingArea1.Refresh

End

Public Sub DrawingArea1_Draw()
 
 Dim i As Integer

 With Paint
   For i = 0 To iimm.Max
     .DrawImage(iimm[i], xx[i], yy[i], im.W, im.H, Align.Center)
   Next 
   .End
 End With

End