我正在尝试从我的一个表单中重复截图(即加载具有特定数据的表单,获取并保存截图,然后加载具有不同数据的表单,获取另一个截图,等等)。
该表单包含重叠的 Shape 和 Control 元素。当我在屏幕上看到表格时,我得到了正确的 z 顺序,但在屏幕截图中,z 顺序是相反的。
我已经在网站上找到了一些线程来解释在使用我当前使用的 DrawToBitmap 方法时反转的 z 顺序。我还发现了 Controls 和 Shapes 的 BringToFront() 和 SendToBack 方法,并尝试使用它们来调整 z 顺序以获得正确的屏幕截图。仍然没有成功。
然后我阅读了有关这些方法的 Shape 类的文档,发现了以下注释:
BringToFront方法可用于将 LineShape、OvalShape 或 RectangleShape 控件放置在给定容器中所有其他线条和形状控件的前面。它不会将控件定位在容器中其他类型控件的前面;使用线条和形状控件绘制的图形总是出现在其他控件的后面。
是否有机会改变这种行为,并使用 DrawToBitmap 正确截取我的表单?有其他解决方案的想法吗?我也尝试过 Graphics 类的 CopyFromScreen 方法,但我希望整个屏幕截图保存过程能够正常工作,而不显示我要保存的表单。