Differenze tra le versioni di "Drag-Drop di un'immagine in una DrawingArea"
Riga 6: | Riga 6: | ||
− | + | Public Sub Form_Open() | |
<FONT Color=gray>' ''Attiva la capacità della "DrawingArea" di sollevare l'evento "_Drop():''</font> | <FONT Color=gray>' ''Attiva la capacità della "DrawingArea" di sollevare l'evento "_Drop():''</font> | ||
DrawingArea1.Drop = True | DrawingArea1.Drop = True | ||
− | PictureBox1.Picture = Picture.Load("<FONT Color= | + | PictureBox1.Picture = Picture.Load("<FONT Color=darkgreen>''/percorso/del/file/immagine''</font>") |
− | + | End | |
− | + | Public Sub PictureBox1_MouseDrag() | |
<FONT Color=gray>' ''Preleviamo e trasciniamo l'immagine dalla "PictureBox":''</font> | <FONT Color=gray>' ''Preleviamo e trasciniamo l'immagine dalla "PictureBox":''</font> | ||
Riga 22: | Riga 22: | ||
Last.Drag(Last.Picture.Image) | Last.Drag(Last.Picture.Image) | ||
− | + | End | |
− | + | Public Sub DrawingArea1_Drop() | |
pc = Drag.Data.Picture | pc = Drag.Data.Picture | ||
Riga 33: | Riga 33: | ||
DrawingArea1.Refresh | DrawingArea1.Refresh | ||
− | + | End | |
− | + | Public Sub DrawingArea1_Draw() <FONT Color=gray>' ''Si disegna l'immagine nella "DrawingArea"''</font> | |
If Object.Address(pc) == 0 Then Return | If Object.Address(pc) == 0 Then Return | ||
Riga 45: | Riga 45: | ||
End With | End With | ||
− | + | End | |
===Conservare le immagini precedentemente trascinate=== | ===Conservare le immagini precedentemente trascinate=== | ||
Riga 61: | Riga 61: | ||
− | + | Public Sub Form_Open() | |
<FONT Color=gray>' ''Attiviamo la capacità della "DrawingArea" di sollevare l'evento "_Drop():''</font> | <FONT Color=gray>' ''Attiviamo la capacità della "DrawingArea" di sollevare l'evento "_Drop():''</font> | ||
Riga 68: | Riga 68: | ||
PictureBox1.Picture = Picture.Load("<FONT Color=gray>''/percorso/del/file/immagine''</font>") | PictureBox1.Picture = Picture.Load("<FONT Color=gray>''/percorso/del/file/immagine''</font>") | ||
− | + | End | |
− | + | Public Sub PictureBox1_MouseDrag() | |
<FONT Color=gray>' ''Preleviamo e trasciniamo l'immagine dalla "PictureBox":''</font> | <FONT Color=gray>' ''Preleviamo e trasciniamo l'immagine dalla "PictureBox":''</font> | ||
Riga 77: | Riga 77: | ||
Last.Drag(Last.Picture.Image) | Last.Drag(Last.Picture.Image) | ||
− | + | End | |
− | + | Public Sub DrawingArea1_Drop() | |
Dim im As IMMAGINI | Dim im As IMMAGINI | ||
Riga 95: | Riga 95: | ||
DrawingArea1.Refresh | DrawingArea1.Refresh | ||
− | + | End | |
− | + | Public Sub DrawingArea1_Draw() | |
Dim n As Integer | Dim n As Integer | ||
Riga 107: | Riga 107: | ||
Next | Next | ||
− | + | End | |
Riga 119: | Riga 119: | ||
− | + | Public Sub Form_Open() | |
<FONT Color=gray>' ''Attiva la capacità della "DrawingArea" di sollevare l'evento "_Drop():''</font> | <FONT Color=gray>' ''Attiva la capacità della "DrawingArea" di sollevare l'evento "_Drop():''</font> | ||
DrawingArea1.Drop = True | DrawingArea1.Drop = True | ||
− | + | End | |
− | + | Public Sub DrawingArea2_Draw() | |
pc = Picture["icon:/32/book"] | pc = Picture["icon:/32/book"] | ||
Riga 136: | Riga 136: | ||
End With | End With | ||
− | + | End | |
− | + | Public Sub DrawingArea2_MouseDrag() | |
<FONT Color=gray>' ''Preleviamo e trasciniamo l'immagine dell'Oggetto "Picture", presente anche nella "DrawingArea2":''</font> | <FONT Color=gray>' ''Preleviamo e trasciniamo l'immagine dell'Oggetto "Picture", presente anche nella "DrawingArea2":''</font> | ||
Riga 146: | Riga 146: | ||
Last.Drag(pc.Image) | Last.Drag(pc.Image) | ||
− | + | End | |
− | + | Public Sub DrawingArea1_Drop() | |
bo = True | bo = True | ||
Riga 157: | Riga 157: | ||
DrawingArea1.Refresh | DrawingArea1.Refresh | ||
− | + | End | |
− | + | Public Sub DrawingArea1_Draw() ' Si disegna l'immagine nella "DrawingArea" | |
If bo == False Then Return | If bo == False Then Return | ||
Riga 169: | Riga 169: | ||
End With | End With | ||
− | + | End | |
===Drag&Drop da più ''DrawingArea'' ad una ''DrawingArea'' principale=== | ===Drag&Drop da più ''DrawingArea'' ad una ''DrawingArea'' principale=== | ||
Riga 185: | Riga 185: | ||
− | + | Public Sub Form_Open() | |
<FONT Color=gray>' ''Attiva la capacità della "DrawingArea" principale di sollevare l'evento "_Drop():''</font> | <FONT Color=gray>' ''Attiva la capacità della "DrawingArea" principale di sollevare l'evento "_Drop():''</font> | ||
Riga 202: | Riga 202: | ||
ddrr[3] = DrawingArea5 | ddrr[3] = DrawingArea5 | ||
− | + | End | |
− | + | Public Sub Dr_Draw() | |
<FONT Color=gray>' ''Assegna ad ogni "DrawingArea" esistente un'immagine, che potrà essere trasferita e rilasciata nella "DrawingArea" principale:''</font> | <FONT Color=gray>' ''Assegna ad ogni "DrawingArea" esistente un'immagine, che potrà essere trasferita e rilasciata nella "DrawingArea" principale:''</font> | ||
Riga 224: | Riga 224: | ||
End With | End With | ||
− | + | End | |
− | + | Public Sub Dr_MouseDrag() | |
<FONT Color=gray>' ''Preleviamo e trasciniamo l'immagine da una "DrawingArea":''</font> | <FONT Color=gray>' ''Preleviamo e trasciniamo l'immagine da una "DrawingArea":''</font> | ||
Riga 234: | Riga 234: | ||
Last.Drag(pc[ddrr.Find(Last)].Image) | Last.Drag(pc[ddrr.Find(Last)].Image) | ||
− | + | End | |
− | + | Public Sub DrawingArea1_Drop() | |
Dim im As IMMAGINI | Dim im As IMMAGINI | ||
Riga 251: | Riga 251: | ||
DrawingArea1.Refresh | DrawingArea1.Refresh | ||
− | + | End | |
− | + | Public Sub DrawingArea1_Draw() ' Si disegna l'immagine nella "DrawingArea":''</font> | |
Dim n As Integer | Dim n As Integer | ||
Riga 263: | Riga 263: | ||
Next | Next | ||
− | + | End |
Versione delle 11:02, 27 giu 2024
Indice
Drag&Drop da una PictureBox in una DrawingArea
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 immagini 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 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() 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" l'immagine trascinata, nonché le coordinate X ed Y di rilascio dell'immagine medesima all'interno della "DrawingArea". I valori contenuti nei predetti membri della "Struttura", saranno utilizzati per disegnare l'immagine 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
Drag&Drop da una DrawingArea ad un'altra
Mostriamo un possibile codice per effettuare il Drag-Drop del disegno da una DrawingArea ad una DrawingArea.
Nel caso di Drag&Drop da una DrawingArea ad un'altra è assolutamente necessario un Oggetto Picture di appoggio, poiché la Classe DrawingArea non ha un Metodo per generare un Oggetto di tipo Image o Picture.
Private pc As Picture Private bo As Boolean 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 End Public Sub DrawingArea2_Draw() pc = Picture["icon:/32/book"] With Paint .DrawPicture(pc, 0, 0, pc.W, pc.H) .End End With End Public Sub DrawingArea2_MouseDrag() ' Preleviamo e trasciniamo l'immagine dell'Oggetto "Picture", presente anche nella "DrawingArea2": Drag.Icon = pc Last.Drag(pc.Image) End Public Sub DrawingArea1_Drop() bo = True x = Drag.X y = Drag.Y DrawingArea1.Refresh End Public Sub DrawingArea1_Draw() ' Si disegna l'immagine nella "DrawingArea" If bo == False Then Return With Paint .DrawPicture(pc, x, y, pc.W, pc.H) .End End With End
Drag&Drop da più DrawingArea ad una DrawingArea principale
Mostriamo un possibile codice per effettuare il Drag-Drop del disegno presente in varie DrawingArea in una DrawingArea principale.
Poniamo il caso di avere una DrawingArea principale, nella quale saranno rilasciati i disegni presenti in altre quattro DrawingArea. Assumiamo che le quattro DrawingArea, dalle quali sarà trascinato il rispettivo disegno, appartengano ad un unico Gruppo degli Eventi (ad esempio "Dr").
Anche in questo caso, per le ragioni spiegate nel paragrafo precedente, è necessario un Oggetto Picture di appoggio.
Public Struct IMMAGINI drx As Short dry As Short p As Picture End Struct Private iimm As New IMMAGINI[] Private ddrr As New DrawingArea[4] Private pc As New Picture[] Public Sub Form_Open() ' Attiva la capacità della "DrawingArea" principale di sollevare l'evento "_Drop(): DrawingArea1.Drop = True ' Assegna ogni "DrawingArea" secondaria a un unico Gruppo degli Eventi (ad esempio "Dr"): Object.Attach(DrawingArea2, Me, "Dr") Object.Attach(DrawingArea3, Me, "Dr") Object.Attach(DrawingArea4, Me, "Dr") Object.Attach(DrawingArea5, Me, "Dr") ' Assegna ogni "DrawingArea" esistente ad un elemento di un vettore di tipo "DrawingArea[]", al fine di collegare il suo Indice degli elementi a quello del vettore di tipo "Picture[]": ddrr[0] = DrawingArea2 ddrr[1] = DrawingArea3 ddrr[2] = DrawingArea4 ddrr[3] = DrawingArea5 End Public Sub Dr_Draw() ' Assegna ad ogni "DrawingArea" esistente un'immagine, che potrà essere trasferita e rilasciata nella "DrawingArea" principale: Select Case Last.Name Case "DrawingArea2" pc.Push(Picture["icon:/32/book"]) Case "DrawingArea3" pc.Push(Picture["icon:/32/call"]) Case "DrawingArea4" pc.Push(Picture["icon:/32/battery"]) Case "DrawingArea5" pc.Push(Picture["icon:/32/audio"]) End Select With Paint .DrawPicture(pc[pc.Max], 1, 1, 32, 32) .End End With End Public Sub Dr_MouseDrag() ' Preleviamo e trasciniamo l'immagine da una "DrawingArea": Drag.Icon = pc[ddrr.Find(Last)] Last.Drag(pc[ddrr.Find(Last)].Image) End Public Sub DrawingArea1_Drop() Dim im As IMMAGINI With im = New IMMAGINI .drx = Drag.X .dry = Drag.Y .p = Drag.Data.Picture End With iimm.Push(im) DrawingArea1.Refresh End Public Sub DrawingArea1_Draw() ' Si disegna l'immagine nella "DrawingArea":</font> Dim n As Integer ' Ridisegna le immagini precedentemente rilasciate nella "DrawingArea": For n = 0 To iimm.Max Paint.DrawPicture(iimm[n].p, iimm[n].drX, iimm[n].drY) Next End