2013-05-04 55 views
1

我想將圖像從面板保存到位圖,然後我想要在我的表格出現最小化模式後加載保存的圖像。如何保存和加載面板?

Bitmap bmp = new Bitmap(panel1.Width, panel1.Height); 
panel1.DrawToBitmap(bmp, panel1.Bounds); 
bmp.Save(@"C:\Test"); 
panel1.BackgroundImage = Image.FromFile(@"C:\Test"); 

我應該使用什麼事件來最小化事件? P.S.我是C#初學者。

+0

字裏行間,似乎你的形象被「丟失」當最小化和還原表?我猜你可能使用過CreateGraphics()來完成你的繪圖。在面板的Paint()事件中使用「e.Graphics」,並存儲關於在Class級別繪製什麼的數據,以便在Form恢復時自動重畫。如果您向我們展示您最初如何創建繪圖,那麼我們可以幫助您解決問題。 – 2013-05-04 16:16:50

回答

0

EDITED

繪製你的面板中的內容。這應其Paint事件處理程序內部完成,像這樣:

private void panel1_Paint(object sender, PaintEventArgs e) 
{ 
    using (Pen p = new Pen(Color.Red, 3)) 
    { 
     // get the panel's Graphics instance 
     Graphics gr = e.Graphics; 

     // draw to panel 
     gr.DrawLine(p, new Point(30, 30), new Point(80, 120)); 
     gr.DrawEllipse(p, 30, 30, 80, 120); 
    } 
} 

保存您的面板中的內容爲圖像。這部分應該在其他地方進行(例如,當你點擊「保存」按鈕):

private void saveButton_Click(object sender, EventArgs e) 
{ 
    int width = panel1.Size.Width; 
    int height = panel1.Size.Height; 

    using (Bitmap bmp = new Bitmap(width, height)) 
    { 
     panel1.DrawToBitmap(bmp, new Rectangle(0, 0, width, height)); 
     bmp.Save(@"C:\testBitmap.jpeg", ImageFormat.Jpeg); 
    } 
} 
+0

謝謝,但我只得到一個白色的背景圖像,我沒有得到圖形我使用e.drawline() – 2013-05-04 14:28:54

+0

這裏畫它是我想要做的我不想重繪我的觀點使用onpaint方法我想要以保存與我用鼠標繪圖的面板,然後我可以加載保存的圖像與加載按鈕,我面臨的問題是保存..我不想使用onpaint方法 – 2013-05-04 14:51:40

+0

@HussainHalai看到我的更新回答,如果它可以幫助你接受它! – Obama 2013-05-04 14:55:30