需要有关C#Windows Forms程序的帮助。这是在.NET 4.0上。

我使用以下代码(片段)从我的窗口捕获合成图像:

var location = PointToScreen(picVisualizer.Location);
...
g.CopyFromScreen(location, new Point(0, 0), picVisualizer.Size, CopyPixelOperation.SourceCopy);


picVisualizer是我窗口中的PictureBox控件。
只要用户将Windows字体/图标的缩放比例保持在100%,这就能按预期工作。如果它们发生变化,则捕获的图像大小合适,但会偏移,从而捕获窗口的一部分,桌面等。

我尝试了多种解决方案,但它们始终为我提供相同的位置值,因此最终结果是相同的。我也尝试过将AutoScaleMode设置为None,Font,Dpi和Inherit,这四个参数都给了我相同的结果。

有没有一种方法可以调整该代码,以便即使显示比例未达到100%时也可以捕获屏幕的正确部分?

谢谢。

最佳答案

Blorgbeard建议的答案效果很好。

picVisualizer.DrawToBitmap(bitmap, picVisualizer.ClientRectangle);


谢谢。

10-07 20:23