0
我試圖將面板上的圖像保存到BMP,並且只要保存,就只有一張空白圖像。如何將面板保存爲BMP
繪圖代碼
private void DrawingPanel_MouseMove(object sender, MouseEventArgs e)
{
OldPoint = NewPoint;
NewPoint = new Point(e.X, e.Y);
if (e.Button == MouseButtons.Left)
{
Brush brush = new SolidBrush(Color.Red);
Pen pen = new Pen(brush, 1);
DrawingPanel.CreateGraphics().DrawLine(pen, OldPoint, NewPoint);
}
}
可以節省代碼
void SaveBMP(string location)
{
Bitmap bmp = new Bitmap((int)DrawingPanel.Width, (int)DrawingPanel.Height);
DrawingPanel.DrawToBitmap(bmp, new Rectangle(0, 0, DrawingPanel.Width, DrawingPanel.Height));
FileStream saveStream = new FileStream(location + ".bmp", FileMode.OpenOrCreate);
bmp.Save(saveStream, ImageFormat.Bmp);
saveStream.Flush();
saveStream.Close();
}
最終結果
這是我畫
這是節省
那麼,你必須把畫中的面板漆事件,由於面板將無法保存的DrawLine,你只需添加「動態」。 – Patrick
您是否嘗試覆蓋面板並在重寫OnPaint方法中對其進行繪製?這就是像這樣的自定義控制繪圖遵循的一般模式。 由於DrawBitmap方法可能再次繪製整個控件而不是繪製您當前在屏幕上看到的任何內容,因此您對當前代碼無效,這對我來說很有意義。 – steinar
@steinar我該如何做到這一點?你能舉一個例子答覆,謝謝。 – ixenocider