Ecco un piccolo esempio che chiarisce alcune cose per me (ero alle prese con questo un po 'troppo).
PBOX è un PictureBox in Form1, rendono almeno 50x50
AppPath è stato derivato da System.Reflection ma utilizzare qualsiasi percorso che ti piace
Ci sono due pulsanti, uno per il disegno, uno per il salvataggio, i loro eventi click sono nel codice qui sotto.
cose che ho imparato:
(1) "pBox.Image =" non fare nulla, ma inizializzare l'immagine PBOX, esso non deve essere un nome di file come ogni esempio ho trovato usato (risparmio problema avuto a quello stesso file perché è stato condiviso bloccato). Inoltre, se il tuo obiettivo è quello di vedere le cose sull'intera superficie del controllo, probabilmente ti piacerà impostare la dimensione al momento dell'inizializzazione in base alla dimensione che ti serve. Ho usato le dimensioni del pBox in questo esempio ma normalmente uso la dimensione bitmap (perché in genere inizio con un file di immagine reale).
(2) Ho sempre avuto problemi a vedere i miei disegni apparire sul controllo o vedere le mie modifiche salvate nel file di output (o entrambi). Nei miei tentativi precedenti avrei duplicato i disegni sia sul controllo che sulla bitmap. Ovviamente non è necessario ma la bitmap modificata deve essere ricaricata nel control.image ... e QUESTO è stato il pezzo di questo puzzle che mi mancava.
(A) Creare un bitmap dal control.image e disegnare sulla bitmap
(B) Caricare la bitmap nel control.Image (in modo da poter vedere i cambiamenti provocati dal sorteggio)
(C) Salvare il control.Image
(2-opzione) Si dispone di un bitmap globale (o passato) (probabilmente da un file vero e proprio)
(a) Disegnare sulla bitmap
(B) Caricare la bitmap nel control.Image (in modo da poter vedere i cambiamenti)
(C) Salvare il bitmap
public Form1()
{
InitializeComponent();
pBox.Image = new Bitmap(pBox.Width, pBox.Height);
}
private void DrawStuff1_Click(object sender, EventArgs e)
{
Bitmap bmp = new Bitmap(pBox.Image);
Graphics g = Graphics.FromImage(bmp);
g.FillRectangle(Brushes.Red, 5, 5, 25, 25); //hard-coded size to reduce clutter
pBox.Image = bmp; //this makes your changes visible
}
private void Save_Click(object sender, EventArgs e)
{
pBox.Image.Save(appPath + "SavedImage.bmp");
}
Hi Può chiarire/fare un esempio? – tguclu