我有一张有两个面板的表格。我试图将panel2的内容保存为图像。我看到一个线程谈到了使用屏幕截图来完成这个任务,但是我再也找不到线程了。也可以阅读关于使用drawtobitmap方法的内容,但是它来自visual studio 2005信息,不确定它是否是最新的或者最适合的解决方案。那么,您建议如何将panel2保存为图片,最好是jpg?
更新:
我实现了下面为drawtobitmap推荐的代码,但是它保存了我的panel2的一半(如果这有区别的话,则保存了左半部分)。
因为它节省了一半panel2,所以我将width调用乘以'2'以使它保存完整的表单。有点奇怪,对我来说没有意义,因为面板2的宽度应该是整个面板,而不是一半?
//multiplies the width of panel2 call by 2 to make it save the full panel
Bitmap bmp = new Bitmap(splitContainer1.Panel2.Width * 2, splitContainer1.Panel2.Height);
splitContainer1.Panel2.DrawToBitmap(bmp, splitContainer1.Panel2.Bounds);
bmp.Save(@"C:\Test.bmp");
最佳答案
Control.DrawToBitMap
在.NET 4中仍受支持。以下是注意事项。
从上面链接:
ActiveX控件不支持DrawToBitMap方法。你
可以重写onprint事件并提供自定义打印逻辑,如果
必修的。
DrawToBitMap方法有以下限制:
对于大型位图,可能会引发ArgumentException。最大值
允许的尺寸因机器而异。
DrawToBitMap不支持Windows XP的墨迹控件
平板电脑2005版操作系统。
如果的Visible属性
文本框设置为false。
容器中的控件按相反的顺序呈现。
DrawToBitMap对于RichTextBox不是完全可用的;只有
绘制位图的边框。
编辑添加的示例和图像:
Bitmap bmp = new Bitmap(panel1.Width,panel1.Height);
panel1.DrawToBitmap(bmp, panel1.Bounds);
bmp.Save(@"C:\Temp\Test.bmp");