【发布时间】:2013-02-03 15:32:12
【问题描述】:
我正在尝试将面板上的图像保存为 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。
-
您是否尝试过覆盖面板并在覆盖的 OnPaint 方法中对其进行绘制?这是像这样的自定义控件绘图要遵循的一般模式。对我来说,您当前的代码不起作用是有道理的,因为 DrawBitmap 方法可能会再次绘制整个控件,而不是绘制您当前在屏幕上看到的任何内容。
-
@steinar 我该怎么做呢?能否举例回复一下,谢谢。
标签: c# winforms bitmap save bmp