DrawToBitmap缺少面板的右下角

时间:2013-04-15 13:44:56

标签: c# winforms drawing

我正在使用DrawtoBitmap将图纸从面板保存到特定位置,但是当我打开文件时,图像的右下角部分应该是空白的。 这个空白矩形的大小与绘图有所不同。 这是我的代码:

Bitmap bmp = new Bitmap(panel1.Width, panel1.Height);
Graphics g = Graphics.FromImage(bmp);   
Rectangle rect = panel1.RectangleToScreen(panel1.ClientRectangle);
g.CopyFromScreen(rect.Location, Point.Empty, panel1.ClientSize);
g.Dispose();

panel1.DrawToBitmap(bmp, rect);

然后我使用SaveFileDialog来存储位图。 问题可能是我绘制的面板停靠在父工具的StripContainer.ContentPanel中,我不确定。

非常感谢有关此事的任何想法或解决方案!

1 个答案:

答案 0 :(得分:2)

Rectangle rect = panel1.RectangleToScreen(panel1.ClientRectangle);
...
panel1.DrawToBitmap(bmp, rect);

你只是传递了错误的矩形。它在屏幕坐标中,需要在客户端坐标中。你通过使用CopyFromScreen()来解决这个问题,它确实需要屏幕坐标。但是没有做任何有用的事情,只是摆脱它。修正:

Rectangle rect = new Rectangle(Point.Empty, panel1.Size);
panel1.DrawToBitmap(bmp, rect);