Differenze tra le versioni di "Drag-Drop di un'immagine in una DrawingArea"
(Creata pagina con "Mostriamo un possibile codice per effettuare un semplice Drag-Drop di un'immagine da una ''PictureBox'' in una ''DrawingArea''. Private pc As Picture Private x As Short Pri...") |
|||
Riga 43: | Riga 43: | ||
.End | .End | ||
End With | End With | ||
+ | |||
+ | '''End''' | ||
+ | |||
+ | ====Conservare le immaginni precedentemente trascinate==== | ||
+ | Per conservare - durante un nuovo rilascio del testo nella ''DrawingArea'' - le immagini eventualmente già trascinate e rilasciate, bisognerà inserire i valori (ed in particolare: la ''Picture'' e le coordinate di rilascio) di ciascun trascinamento effettuato in una variabile di tipo ''Struttura'', che a sua volta dovrà essere memorizzata all'interno di una variabile vettoriale del tipo della ''Struttura'' dichiarata nel programma. | ||
+ | |||
+ | Ogni qualvolta avviene il disegno all'interno della ''DrawingArea'' della nuova immagine trascinata e rilasciata, bisognerà mediante un apposito ciclo far ridisegnare dalla ''DrawingArea'' anche le altre immagini sino a quel momento trascinati e disegnati, sulla base dei valori memorizzati - per ciascuna immagine trascinata - in un'apposita variabile del tipo della ''Struttura'' dichiarata. | ||
+ | |||
+ | Mostriamo un semplice codice, nel quale poniamo il caso di avere più ''PictureBox'', appartenenti al medesimo Gruppo di Eventi (ad esempio "Pic") ed aventi ciascuna una diversa immagine da trascinare e rilasciare nella ''DrawingArea''. | ||
+ | Public Struct IMMAGINI | ||
+ | drx As Short | ||
+ | dry As Short | ||
+ | pc As Picture | ||
+ | End Struct | ||
+ | Private iimm As New IMMAGINI[] | ||
+ | |||
+ | |||
+ | '''Public''' Sub Form_Open() | ||
+ | |||
+ | <FONT Color=gray>' ''Attiviamo la capacità della "DrawingArea" di sollevare l'evento "_Drop():''</font> | ||
+ | DrawingArea1.Drop = True | ||
+ | |||
+ | '''End''' | ||
+ | |||
+ | |||
+ | '''Public''' Sub pic_MouseDrag() | ||
+ | |||
+ | <FONT Color=gray>' ''Preleviamo e trasciniamo l'immagine dalla "PictureBox":''</font> | ||
+ | Drag.Icon = Last.Picture | ||
+ | Last.Drag(Last.Picture.Image) | ||
+ | |||
+ | '''End''' | ||
+ | |||
+ | |||
+ | '''Public''' Sub DrawingArea1_Drop() | ||
+ | |||
+ | Dim im As IMMAGINI | ||
+ | |||
+ | <FONT Color=gray>' ''All'atto del rilascio del testo viene creata una variabile del tipo della "Struttura" dichiarata. Inoltre vengono assegnate ai corrispondenti membri della variabile "Struttura" il testo trascinato, nonché le coordinate X ed Y di rilascio del testo medesimo all'interno della "DrawingArea". I valori contenuti nei predetti membri della "Struttura", saranno utilizzati per disegnare il testo nella "DrawingArea".''</font> | ||
+ | With im = New IMMAGINI | ||
+ | .drx = Drag.X | ||
+ | .dry = Drag.Y | ||
+ | .pc = Drag.Data.Picture | ||
+ | End With | ||
+ | |||
+ | iimm.Push(im) | ||
+ | |||
+ | DrawingArea1.Refresh | ||
+ | |||
+ | '''End''' | ||
+ | |||
+ | |||
+ | '''Public''' Sub DrawingArea1_Draw() | ||
+ | |||
+ | Dim n As Integer | ||
+ | |||
+ | <FONT Color=gray>' ''Ridisegna le immagini precedentemente rilasciate nella "DrawingArea":''</font> | ||
+ | For n = 0 To iimm.Max | ||
+ | Paint.DrawPicture(iimm[n].pc, iimm[n].drX, iimm[n].drY) | ||
+ | Next | ||
'''End''' | '''End''' |
Versione delle 11:14, 1 nov 2020
Mostriamo un possibile codice per effettuare un semplice Drag-Drop di un'immagine da una PictureBox in una DrawingArea.
Private pc As Picture Private x As Short Private y As Short Public Sub Form_Open() ' Attiva la capacità della "DrawingArea" di sollevare l'evento "_Drop(): DrawingArea1.Drop = True PictureBox1.Picture = Picture.Load("/percorso/del/file/immagine") End Public Sub PictureBox1_MouseDrag() ' Preleviamo e trasciniamo l'immagine dalla "PictureBox": Drag.Icon = Last.Picture Last.Drag(Last.Picture.Image) End Public Sub DrawingArea1_Drop() pc = Drag.Data.Picture x = Drag.X y = Drag.Y DrawingArea1.Refresh End Public Sub DrawingArea1_Draw() ' Si disegna l'immagine nella "DrawingArea" If Object.Address(pc) == 0 Then Return With Paint .DrawPicture(pc, x, y, pc.W, pc.H) .End End With End
Conservare le immaginni precedentemente trascinate
Per conservare - durante un nuovo rilascio del testo nella DrawingArea - le immagini eventualmente già trascinate e rilasciate, bisognerà inserire i valori (ed in particolare: la Picture e le coordinate di rilascio) di ciascun trascinamento effettuato in una variabile di tipo Struttura, che a sua volta dovrà essere memorizzata all'interno di una variabile vettoriale del tipo della Struttura dichiarata nel programma.
Ogni qualvolta avviene il disegno all'interno della DrawingArea della nuova immagine trascinata e rilasciata, bisognerà mediante un apposito ciclo far ridisegnare dalla DrawingArea anche le altre immagini sino a quel momento trascinati e disegnati, sulla base dei valori memorizzati - per ciascuna immagine trascinata - in un'apposita variabile del tipo della Struttura dichiarata.
Mostriamo un semplice codice, nel quale poniamo il caso di avere più PictureBox, appartenenti al medesimo Gruppo di Eventi (ad esempio "Pic") ed aventi ciascuna una diversa immagine da trascinare e rilasciare nella DrawingArea.
Public Struct IMMAGINI drx As Short dry As Short pc As Picture End Struct Private iimm As New IMMAGINI[] Public Sub Form_Open() ' Attiviamo la capacità della "DrawingArea" di sollevare l'evento "_Drop(): DrawingArea1.Drop = True End Public Sub pic_MouseDrag() ' Preleviamo e trasciniamo l'immagine dalla "PictureBox": Drag.Icon = Last.Picture Last.Drag(Last.Picture.Image) End Public Sub DrawingArea1_Drop() Dim im As IMMAGINI ' All'atto del rilascio del testo viene creata una variabile del tipo della "Struttura" dichiarata. Inoltre vengono assegnate ai corrispondenti membri della variabile "Struttura" il testo trascinato, nonché le coordinate X ed Y di rilascio del testo medesimo all'interno della "DrawingArea". I valori contenuti nei predetti membri della "Struttura", saranno utilizzati per disegnare il testo nella "DrawingArea". With im = New IMMAGINI .drx = Drag.X .dry = Drag.Y .pc = Drag.Data.Picture End With iimm.Push(im) DrawingArea1.Refresh End Public Sub DrawingArea1_Draw() Dim n As Integer ' Ridisegna le immagini precedentemente rilasciate nella "DrawingArea": For n = 0 To iimm.Max Paint.DrawPicture(iimm[n].pc, iimm[n].drX, iimm[n].drY) Next End