Visual C# - 从表单渲染图像?

时间:2012-03-28 14:17:05

标签: c# visual-studio

我有一个用Visual Studio(C#)编写的有趣的应用程序,我想知道 - 我做的是我在表单上以某种方式绘制面板 - 如果可以渲染表单而不截取屏幕截图?< / p>

由于

2 个答案:

答案 0 :(得分:3)

如果通过“截取屏幕截图”表示“发送 PrtSc ”,那么使用System.Drawing.Graphics.CopyFromScreen会有更好的方式:

using(Bitmap b = new Bitmap(this.ClientSize.Width, this.ClientSize.Height)) {
    using(Graphics g = Graphics.FromImage(b)) {
        g.CopyFromScreen(this.PointToClient(Point.Empty), Point.Empty, this.ClientSize);
    }

    // Your form is now rendered into b.
}

如果您想要包含边框,只需使用Size代替ClientSizethis.Location代替this.PointToClient(Point.Empty)

或者,您可以使用this.DrawToBitmap

using(Bitmap b = new Bitmap(this.Width, this.Height)) {
    this.DrawToBitmap(b, new Rectangle(0, 0, this.Width, this.Height));

    // Your form is now rendered into b.
}

即使您的表单没有焦点,这也会有效。但是,它将绘制边框,如果Aero处于活动状态,它将以Windows Basic样式绘制它。

答案 1 :(得分:-1)

不,除了某种截图库提供的图像之外,不可能将表单的视觉捕获为图像(如果这就是您所要求的)。