Mik*_*e91 11 c# image winforms drawtobitmap
我目前有这个有用的代码,我在StackOverflow上的其他地方找到了:
form.DrawToBitmap(bmp, new Rectangle(0, 0, bmp.Width, bmp.Height));
Run Code Online (Sandbox Code Playgroud)
我有一个带有几个文本框/下拉菜单和一个大图片框的表单.然后我在这个大图片框的顶部放置了较小的图片框.
当我查看截图时,它会显示表单,但是由于某些原因,放置在大图片框上的较小图片框不显示?
Kei*_*thS 16
我在Control.DrawToBitmap()的文档中看到了这个限制:
容器内的控件以相反的顺序呈现.
这意味着如果两个控件彼此重叠,那么通常在另一个控件下面"渲染"(首先绘制它然后由重叠控件透支)将最后渲染(因此它将与通常重叠的控件重叠).在您的情况下,较小的控件完全绘制在较大的控件的边界内并且在其顶部,控件将被此反向渲染隐藏.
尝试通过在较大的PictureBox上使用BringToFront()和SendToBack()来解决这个问题.在绘制到位图之前调用BringToFront(),然后在完成后调用SendToBack().如果您不希望用户看到屏幕闪烁,请尝试在进行任何Z顺序更改之前调用SuspendLayout(),然后在重置为正确的Z顺序后调用ResumeLayout(true).