Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
C# / VB.NET - problema Panel.DrawToBitmap
Forum - C# / VB.NET - problema Panel.DrawToBitmap

Avatar
cristian3095 (Normal User)
Pro


Messaggi: 66
Iscritto: 24/09/2010

Segnala al moderatore
Postato alle 17:59
Mercoledì, 26/10/2011
salve a tutti, ho un piccolo problema... dovrei convertire in bitmap un panel che creo da codice, ho provato con
Codice sorgente - presumibilmente VB.NET

  1. For each pan as panel in form2.controls
  2. Dim bmp = new Bitmap(pan.Width, pan.Height)
  3. pan.DrawToBitmap(bmp, new Rectangle(0, 0, pan.Width, pan.Height))
  4. me.picturebox1.image=bmp
  5. next


ma il risultato è una picturebox tutta "color control" (grigia)
premetto che ad ogni panel creato vengono assegnati dei controlli (textbox) ma nell'immagine vedo solo il panel vuoto...come è possibile questo?

PM Quote
Avatar
GN (Member)
Guru


Messaggi: 772
Iscritto: 30/04/2011

Segnala al moderatore
Postato alle 21:42
Mercoledì, 26/10/2011
Stai usando un ciclo, quindi la picturebox visualizzerà solo l'ultimo panel: infatti, se setti l'immagine della picturebox ogni volta sovrascrivi quella precedente. In poche parole: se hai nel form un panel blu e uno rosso, la picturebox visualizzerà in teoria per prima cosa quello blu, ma la sua proprietà image verrà immediatamente modificata per visualizzare quello rosso.

PM Quote
Avatar
cristian3095 (Normal User)
Pro


Messaggi: 66
Iscritto: 24/09/2010

Segnala al moderatore
Postato alle 22:20
Mercoledì, 26/10/2011
si questo lo so...ho scritto il codice in quel modo ma in realtà creo la picturebox da codice e quindi il ciclo mi crea tante picturebox quanti panel, il location delle picturebox è gestito quindi non le mette sovrapposte, cmq il problema non è questo, il problema è che non mi converte il pannello in immagine...non so quale sia il motivo, può darsi che c'entra qualcosa che il panel non si trova nella stessa form della picturebox, ma non credo possa essere questo

PM Quote
Avatar
Qwertj (Dev Team)
Guru


Messaggi: 678
Iscritto: 30/05/2011

Segnala al moderatore
Postato alle 16:54
Giovedì, 27/10/2011
I controlli non vengono disegnati sulla superficie del Panel, è normale che faccia così.
DrawToBitmap restituisce un'immagine creata a partire dall'oggetto Graphics del Panel, che non comprende assolutamente i controlli! Sono due cose distinte!

PM Quote
Avatar
cristian3095 (Normal User)
Pro


Messaggi: 66
Iscritto: 24/09/2010

Segnala al moderatore
Postato alle 17:05
Giovedì, 27/10/2011
però se creo un progetto con un panel e alcuni controlli dentro, una picturebox e un bottone, e al bottone assegno il codice:
Codice sorgente - presumibilmente C# / VB.NET

  1. Dim bmp = new Bitmap(panel1.Width, panel1.Height)
  2. panel1.DrawToBitmap(bmp, new Rectangle(0, 0,panel1.Width, panel1.Height))
  3. picturebox1.backgroundimage=bmp


nella picturebox vengono visualizzati anche i controlli che ci sono dentro il panel... :om:

Ultima modifica effettuata da cristian3095 il 27/10/2011 alle 17:06
PM Quote
Avatar
Qwertj (Dev Team)
Guru


Messaggi: 678
Iscritto: 30/05/2011

Segnala al moderatore
Postato alle 19:22
Venerdì, 28/10/2011
Ah >_> non lo sapevo, forse non agisce come pensavo ma ritagliano il pezzo di schermo corrispondente al viewport del Panel

PM Quote