2012-10-16 16 views
15

Sto lavorando a un'applicazione di disegno di base. Voglio che l'utente sia in grado di salvare il contenuto dell'immagine.Salvare l'immagine nel file

enter image description here

ho pensato di utilizzare

System.Drawing.Drawing2D.GraphicsState img = drawRegion.CreateGraphics().Save(); 

ma questo non mi aiuta per il salvataggio di file.

+1

Che tipo di controllo è 'drawRegion'? – Steve

+1

'drawRegion' è un pannello – Victor

risposta

26

Si potrebbe provare a salvare l'immagine utilizzando questo approccio

SaveFileDialog dialog = new SaveFileDialog(); 
if (dialog.ShowDialog() == DialogResult.OK) 
{ 
    int width = Convert.ToInt32(drawImage.Width); 
    int height = Convert.ToInt32(drawImage.Height); 
    Bitmap bmp = new Bitmap(width,height);   
    drawImage.DrawToBitmap(bmp, new Rectangle(0, 0, width, height); 
    bmp.Save(dialog.FileName, ImageFormat.Jpeg); 
} 
+7

@Joel Giusto, non si apprezza abbastanza Intellisense finché non si scrive codice come questo a mano – Steve

+1

Perché non hai smaltito oggetto bmp? Non potrebbe lasciare il file in uno stato "aperto"? –

+0

dove verrebbe salvata questa immagine? –

3

Se si sta disegnando sulle La grafica del Controllo di quanto dovresti fare qualcosa che disegni sulla Bitmap tutto ciò che stai disegnando sulla tela, ma tieni a mente che Bitmap deve essere la dimensione esatta del controllo che sei dr awing on:

Bitmap bmp = new Bitmap(myControl.ClientRectangle.Width,myControl.ClientRectangle.Height); 
    Graphics gBmp = Graphics.FromImage(bmp); 
    gBmp.DrawEverything(); //this is your code for drawing 
    gBmp.Dispose(); 
    bmp.Save("image.png", ImageFormat.Png); 

Oppure si può utilizzare un metodo di controllo DrawToBitmap. Qualcosa del genere:

Bitmap bmp = new Bitmap(myControl.ClientRectangle.Width, myControl.ClientRectangle.Height); 
myControl.DrawToBitmap(bmp,new Rectangle(0,0,bmp.Width,bmp.Height)); 
bmp.Save("image.png", ImageFormat.Png);