Home Page
Articoli
Tips & Tricks
News
Forum
Archivio Forum
Blogs
Sondaggi
Rss
Video
Utenti
Chi Siamo
Contattaci
Username:
Password:
Login
Registrati ora!
Recupera Password
Home Page
Stanze Forum
App. WinForms / WPF .NET
Fondere 2 graphics per visualizzare il risultato su picturebox con vb....
martedì 12 maggio 2009 - 21.46
Elenco Threads
Stanze Forum
Aggiungi ai Preferiti
Cerca nel forum
hirpo
Profilo
| Newbie
1
messaggi | Data Invio:
mar 12 mag 2009 - 21:46
Buona sera a tutti, mi scuso subito per il titolo criptico, ma essendo un semplice appassionato non so come spegare il problema.
Provo a descriverlo in modo molto elementare, perciò vi prego di essere pazienti per le eventuali sciocchezze che scriverò.
Sto cercando di imparare la parte di vb.net che utilizza le gdi+ e per far ciò sto cercando di realizzare un clone di paint.
Ho creato una finestra con un picturebox dove poter disegnare, e i vari pulsanti per il colore e per il tipo di oggetto da disegnare.
Sono riuscito a far disegnare una linea sulla picturebox tramite il metodo drawline, e sfruttando lo stesso metodo sono riuscito anche a far apparire la linea mentre la si disegna, per intenderci quando si preme il pulsante e si sposta il mouse la linea che dovrà apparire appena si lascia il pulsante.
In particolare utilizzo l'evento mousedown della picturebox per memorizzare le coordinate di partenza della linea, ed il metodo mouseup sempre della picturebox per disegnare la linea.
[code]evento mousedown
VariabiliGlobali.XXPartenza = e.X
VariabiliGlobali.YYPartenza = e.Y
VariabiliGlobali.PulsantePremuto = True
[\code]
[code]evento mouseup
VariabiliGlobali.XXArrivo = e.X
VariabiliGlobali.YYArrivo = e.Y
VariabiliGlobali.PulsantePremuto = False
Dim Penna As Pen
Dim Colore As Color
Dim Spessore As Integer
Dim Immagine, ImmagineTemp1, ImmagineTemp2, ImmagineDef As Image
Dim GraficoDef As Graphics
Spessore = Me.Label105.Text
Colore = Me.Panel51.BackColor
Try
Immagine = New Bitmap(Me.PictureBox8.Image)
Catch
Immagine = New Bitmap(Me.PictureBox8.Width, Me.PictureBox8.Height)
End Try
Grafico(0) = Graphics.FromImage(Immagine)
Penna = New Pen(Colore, Spessore)
If Me.Label106.Text = 1 Then
Grafico(0).DrawLine(Penna, VariabiliGlobali.XXPartenza, VariabiliGlobali.YYPartenza, VariabiliGlobali.XXArrivo, VariabiliGlobali.YYArrivo)
ElseIf Me.Label106.Text = 3 Then
Dim Rettangolo As Rectangle
Rettangolo.X = Math.Min(VariabiliGlobali.XXArrivo, VariabiliGlobali.XXPartenza)
Rettangolo.Y = Math.Min(VariabiliGlobali.YYArrivo, VariabiliGlobali.YYPartenza)
Rettangolo.Width = Math.Abs(VariabiliGlobali.XXArrivo - VariabiliGlobali.XXPartenza)
Rettangolo.Height = Math.Abs(VariabiliGlobali.YYArrivo - VariabiliGlobali.YYPartenza)
Grafico(0).DrawRectangle(Penna, Rettangolo)
ElseIf Me.Label106.Text = 4 Then
Dim Rettangolo As Rectangle
Dim Riempimento As New SolidBrush(Colore)
Rettangolo.X = Math.Min(VariabiliGlobali.XXArrivo, VariabiliGlobali.XXPartenza)
Rettangolo.Y = Math.Min(VariabiliGlobali.YYArrivo, VariabiliGlobali.YYPartenza)
Rettangolo.Width = Math.Abs(VariabiliGlobali.XXArrivo - VariabiliGlobali.XXPartenza)
Rettangolo.Height = Math.Abs(VariabiliGlobali.YYArrivo - VariabiliGlobali.YYPartenza)
Grafico(0).FillRectangle(Riempimento, Rettangolo)
End If
'Fusione immagini
GraficoDef = Me.PictureBox8.CreateGraphics
ImmagineTemp1 = New Bitmap(Me.PictureBox8.Width, Me.PictureBox8.Height, Grafico(0))
ImmagineTemp2 = New Bitmap(Me.PictureBox8.Width, Me.PictureBox8.Height, Grafico(1))
GraficoDef.DrawImage(ImmagineTemp1, 0, 0)
GraficoDef.DrawImage(ImmagineTemp2, 0, 0)
ImmagineDef = New Bitmap(Me.PictureBox8.Width, Me.PictureBox8.Height, GraficoDef)
PictureBox8.Image = ImmagineDef
[\code]
L'oggetto Grafico(0) e Grafico(1) è una matrice di oggetti graphics che mi serve per poter far disegnare l'oggetto (linea, cerchio, quadrato...) mentre si sposta il muose con il pulsante premuto. In sostanza in Grafico(0) memorizzo quello che c'era nella picturebox prima che disegnassi l'ultima linea, mentre in grafico(1) c'è l'ultima linea disegnata. Il mio problema è quello di fondere i due grafici in un' unica immagine e di farla visualizzare nella picturebox. Ho provato con il codice sopra riportato ma nisba e non essendo un esperto ho deciso di chiedere aiuto.
Grazie in anticipo Rino.
P.S. se avete qualche altra strada per realizzare il tutto mi raccomando suggeritelo
Torna su
Stanze Forum
Elenco Threads
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 !