需要有关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);
谢谢。