SALVARE PICTUREBOX CON DISEGNO

giovedì 01 settembre 2011 - 09.10
Tag Elenco Tags  VB.NET  |  .NET 3.5  |  Windows XP  |  Visual Studio 2008  |  SQL Server 2008  |  Internet explorer 8.0  |  Crystal Reports 2008

biggiu Profilo | Junior Member

salve a tutti.
attraverso il web ho trovato una funzione per disegnare all'interno di una picturebox.
di seguito allego il codice :

Public Class FIRMA

Dim OldCoord As Point

Private Sub PictureBox1_MouseDown(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles PictureBox1.MouseDown
If e.Button = Windows.Forms.MouseButtons.Left Then
OldCoord = New Point(e.Location)
End If
End Sub

Private Sub PictureBox1_MouseMove(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles PictureBox1.MouseMove
If e.Button = Windows.Forms.MouseButtons.Left Then

Dim brSize As Single = TextBox1.Text
Dim myColor As System.Drawing.Color = Color.Blue
Dim myPen As System.Drawing.Pen = New Pen(myColor, brSize)
Dim myBrush As System.Drawing.Brush = New System.Drawing.SolidBrush(myColor)

PictureBox1.CreateGraphics.DrawLine(myPen, OldCoord, e.Location)
PictureBox1.CreateGraphics.FillEllipse(myBrush, e.X - (brSize / 2), e.Y - brSize / 2, brSize, brSize)
If OldCoord <> e.Location Then
OldCoord = e.Location
End If
End If
End Sub

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
PictureBox1.CreateGraphics.Clear(Color.White)
End Sub

Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
TextBox1.Text = 5
End Sub

End Class

con questo codice simulo la firma del cliente in calce ad un ordine di vendita.
ora vorrei riuscire a salvare quanto disegnato in un'immagine da destinare ad un campo image di una tabella microsoft sql.

sino ad ora non sono riuscito ad eseguire questo passaggio.
qualcuno è in gradi di darmi una mano?

buon lavoro a tutti.
BigGiu

u235 Profilo | Junior Member

ciao,

io ti sconsiglio di creare la bitmap da un graphics, secondo me ti conviene fare l'opposto, ovvero crei una bitmap e disegni nel suo graphic azichè disegnare sul graphic della picturebox... e poi salvi la bitmap.

biggiu Profilo | Junior Member

Grazie per il consiglio.
Hai qualche esempio di codice da indicarmi ?
BigGiu

u235 Profilo | Junior Member

fai lo stesso che stai facendo con il tuo codice, solo che usi il graphic ricavato dalla bitmap anzichè quello ricavato dalla picturebox :

Il codice sorgente non è stato renderizzato qui
perchè non c'è sufficiente spazio.
Clicca qui per visualizzarlo in una nuova finestra

biggiu Profilo | Junior Member

ho provato la modifica da te suggerita.
Ottengo quanto segue :
1. non riesco a vedere quanto provo a disegnare.
2. la pulizia dell'immagine, por non vedendo nulla, non funziona.
3. il salvataggio funziona ma ho un colore di sfondo strano.

ti allego un progetto test, così, se vuoi puoi verificare quanto dico ed eventualmente aiutarmi a risolvere.

credo che basti pochissimi aggiustamenti per riuscire ad ottenere il risultato sperato.

grazie ed a presto.

BigGiu

u235 Profilo | Junior Member

ciao, diciamo che hai lasciato un pò le cose a metà :)
ti posto una classe che ti può dare l'idea di come intendevo, e se vuoi, puoi usarla direttamente così com'è, oppure la studi e la riproduci a modo tuo :
Il codice sorgente non è stato renderizzato qui
perchè non c'è sufficiente spazio.
Clicca qui per visualizzarlo in una nuova finestra

si tratta di una classe che eredita da picturebox, quindi volendo puoi trascinarla dalla toolBox di visual studio, per impostare il colore della firma usi la proprietà "ColoreInchiostro" e per la grandezza "DimensionePenna" (da visualStudio o da codice), per cancellare chiami la sub "Cancella()" (il colore lo prende direttamente da quello impostato come sfondo della picture, idem x le dimensioni della bitmap) e per salvare usi "Salva("percorso\nome.estensione")"

ciao.

biggiu Profilo | Junior Member

a giorni proverò il tuo codice e ti farò sapere.
Grazie molto per il tuo impegno e dedizione.
BigGiu

u235 Profilo | Junior Member

certo...
Di nulla :)
ciao.
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-2017
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5