Visual C#-从窗体中呈现图像

本文关键字:图像 窗体 C#- Visual | 更新日期: 2023-09-27 18:29:11

我有一个用Visual Studio(C#)编写的有趣的应用程序,我想知道-我所做的是在表单上以某些方式绘制面板-是否可以在不截屏的情况下呈现表单?

感谢

Visual C#-从窗体中呈现图像

如果"截屏"是指"发送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而不是ClientSize,使用this.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样式绘制边框。

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