C# 不带任务栏和窗体外部边缘的窗体活动区域的屏幕截图
我试图捕获windows窗体应用程序的屏幕截图,但当我捕获屏幕截图时,任务栏位于应用程序的顶部和边缘。我只想捕获应用程序内部的屏幕截图,不包括应用程序和任务栏外部的边缘。下面是我用来创建应用程序屏幕截图的代码C# 不带任务栏和窗体外部边缘的窗体活动区域的屏幕截图,c#,winforms,visual-studio,screenshot,C#,Winforms,Visual Studio,Screenshot,我试图捕获windows窗体应用程序的屏幕截图,但当我捕获屏幕截图时,任务栏位于应用程序的顶部和边缘。我只想捕获应用程序内部的屏幕截图,不包括应用程序和任务栏外部的边缘。下面是我用来创建应用程序屏幕截图的代码 private void captureScreenshot() { Rectangle bounds = this.Bounds; using (Bitmap bitmap = new Bitmap(bounds.Width, bounds
private void captureScreenshot()
{
Rectangle bounds = this.Bounds;
using (Bitmap bitmap = new Bitmap(bounds.Width, bounds.Height))
{
using (Graphics g = Graphics.FromImage(bitmap))
{
g.CopyFromScreen(new Point(bounds.Left, bounds.Top), Point.Empty, bounds.Size);
}
bitmap.Save("c:\\Users\\Brandon\\Downloads\\Test.jpg", ImageFormat.Jpeg);
}
}
我假设应用程序的边界并不完全是我想要的屏幕截图,因为它捕获了任务栏,稍微超出了应用程序的边缘
private void captureScreenshot()
{
Rectangle bounds = this.Bounds;
using (Bitmap bitmap = new Bitmap(bounds.Width, bounds.Height))
{
using (Graphics g = Graphics.FromImage(bitmap))
{
g.CopyFromScreen(new Point(bounds.Left, bounds.Top), Point.Empty, bounds.Size);
}
bitmap.Save("c:\\Users\\Brandon\\Downloads\\Test.jpg", ImageFormat.Jpeg);
}
}
下面是我得到的截图:
下面是我想要截屏的区域的图片(用黄色勾勒):
var bounds=this.RectangleToScreen(新矩形(Point.Empty,this.ClientSize));您必须声明您的应用程序,以及您最初尝试关闭的原因。避免JPEG对于包含文本的位图,PNG是最好的。您也可以使用Control.DrawToBitmap()方法,例如,这不需要表单处于焦点。看一看。他们正是你需要的解决方案。获取没有边框的窗体图像。无法按预期工作,他正在使用TransparencyKey属性。谢谢Hans Passant,您的解决方案工作得很好。我想我的应用程序一定已经知道dpi了,因为它只在我添加了你的代码后才工作。我之所以使用jpeg,是因为我将图像发送到谷歌,用机器学习进行分析,这是图像的唯一目的,因此它们需要小而不需要高质量。如果你愿意,你可以将你的评论作为答案发布,我会将其标记为正确。