繁体   English   中英

如何将表单中的面板保存为图片?

[英]How can I save a Panel in my form as a picture?

我有一个有 2 个面板的表格。 我正在尝试将 Panel2 的内容保存为图像。 我看到一个线程谈论使用屏幕捕获来执行此操作,但我再也找不到线程了。 还阅读了有关使用 DrawToBitMap 方法的信息,但它来自 Visual Studio 2005 信息,不确定它是否是最新或最合适的解决方案。 那么你有什么建议将我的 Panel2 保存为图片,最好是 jpg?

更新:我为 DrawToBitMap 实现了下面推荐的代码,但它节省了我的 panel2 的一半(如果有影响,则为左半部分)。 因为它节省了我的 panel2 的一半,所以我将宽度调用乘以“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");

.Net 4仍然支持Control.DrawToBitMap 。具有以下警告。

从上面的链接:

  • ActiveX控件不支持DrawToBitmap方法。 您可以覆盖OnPrint事件,并在需要时提供自定义打印逻辑。

DrawToBitmap方法具有以下限制:

  • 可能会为大位图抛出ArgumentException。 最大允许尺寸因机器而异。
  • DrawToBitmap不支持Windows XP Tablet PC Edition 2005操作系统的Ink控件。
  • 如果TextBox的Visible属性设置为false,则DrawToBitmap不会绘制子TextBox。
  • 容器内的控件以相反的顺序呈现。
  • DrawToBitmap不能完全用于RichTextBox; 仅绘制位图的边框。

编辑添加的示例和图像:

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

命名空间 PanelToPDF { public partial class Form1: Form { public Form1() { InitializeComponent(); }

    private void btnExit_Click(object sender, EventArgs e)
    {
        pictureBox.Dispose();
        Application.Exit();
    }

    private static Bitmap DrawControlToBitmap(Control control)
    {
        Bitmap bitmap = new Bitmap(control.Width, control.Height);
        Graphics graphics = Graphics.FromImage(bitmap);
        Rectangle rect = control.RectangleToScreen(control.ClientRectangle);
        graphics.CopyFromScreen(rect.Location, Point.Empty, control.Size);
        return bitmap;
    }
     private void btnToImage_Click(object sender, EventArgs e)
    {
        Bitmap bitmap = DrawControlToBitmap(panel);
        pictureBox.Image = bitmap;
    }     
}

}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM