Cattura del disegno in una picturebox

mercoledì 30 aprile 2008 - 12.23

LLL Profilo | Newbie

Ciao a tutti,
uso vb2003 e ho una picturebox in cui disegno delle cose, che vorrei salvare in un bitmap. Il problema e' che il comando:

picturebox1.image.save (<percorso>, <formato>)

non funziona, perché la proprietà image della picturebox risulta vuota.
Qualcuno sa come catturare in image il disegno fatto sulla picturebox, o suggerirmi una soluzione alternativa?
Grazie mille!!
LLL

LLL Profilo | Newbie

Credo di aver risolto:
a quanto pare salvare come immagine quello che si è disegnato in un panel o in una picturebox è quanto mai complicato; molto piu' semplice in compenso è disegnare virtualmente in un oggetto immagine, che è anche possibile salvare, e poi stampare l'immagine creata sul panel del form.
La cosa ha richiesto anche pochissime modifiche al codice che avevo già scritto, che lascio qui sotto nel caso in futuro serva a qualcun altro.
Ciao a tutti,
LLL


_____________________VECCHIO CODICE - Disegno in un panel_____________________

Private Sub Panel1_Paint(ByVal sender As System.Object, ByVal e As System.Windows.Forms.PaintEventArgs) Handles Panel1.Paint

Dim Penna As New SolidBrush(Color.Black)
Dim Pennello As New SolidBrush(Color.Gray)

e.Graphics.DrawPolygon(Penna, myarray)
e.Graphics.FillPolygon(Pennello, myarray)

End Sub
__________________________________________________________________________


____NUOVO CODICE - Disegno in un oggetto immagine e riproduco nel panel l'immagine_____

Dim Drawing As Graphics = Me.CreateGraphics()
Dim ImGr As Image
Dim DFI As Graphics

Private Sub Panel1_Paint(ByVal sender As System.Object, ByVal e As System.Windows.Forms.PaintEventArgs) Handles Panel1.Paint

ImGr = New System.Drawing.Bitmap(Panel1.Width, Panel1.Height, Drawing)
DFI = Graphics.FromImage(ImGr)

Dim Background As New SolidBrush(Color.White)
Dim Penna As New SolidBrush(Color.Black)
Dim Pennello As New SolidBrush(Color.Gray)

'disegno nell'oggetto immagine
DFI.FillRectangle(Background, 0, 0, Panel1.Width, Panel1.Height)
DFI.DrawPolygon(Penna, myarray) 'e.Graphics.DrawPolygon(Penna, grafico)
DFI.FillPolygon(Pennello, myarray) 'e.Graphics.FillPolygon(Pennello, grafico)

'stampa dell'immagine nel pannello
e.Graphics.DrawImage(ImGr, 0, 0)

End Sub

'salvataggio dell'immagine
Private Sub MenuItemSalvaImme_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MenuItemSalvaImm.Click
SaveFileDialog1.Title = "Salva immagine"
SaveFileDialog1.Filter = "File BITMAP (*.bmp)|*.bmp|File JPEG (*.jpg)|*.jpg"
'lancia il dialog e esegue il salvataggio dell'immagine se viene premuto il pulsante salva
If SaveFileDialog1.ShowDialog() = DialogResult.OK Then
ImGr.Save(SaveFileDialog1.FileName)
End If
End Sub
____________________________________________________________________________



biggiu Profilo | Junior Member

Salve,
ho letto il tuo post e mi farebbe comodo avere la funzione da te descritta.
Potresti gentilmente mettere a disposizione un progetto demo, in modo da capirne il funzionamento e provarne le funzionalità ?

Grazie
BigGiu
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5