Kor*_*tak 2 screenshot bitmap panel winforms
我有一个Windows窗体,面板上有几个控件.面板不会占用所有的表单空间,只占很小的一部分.我想知道的是,是否有某种方法可以检索面板的显示(包含所有子控件)作为位图.就像一个截图,但只是裁剪到面板.
我没有调查屏幕捕获,因为面板在可滚动控件(DevX控件)内,所以有时它可能不完全可见,我需要它的可视化表示是否可见.
这有可能吗?
编辑:
好吧,现在好像我担心的那样.使用DrawToBitmap()的建议解决方案仅绘制可见的控件部分.我使用DisplayRectangle来检索完整控件的大小.矩形是可以的,现在位图是完整控件的大小,但是控件中不可见的部分在位图上是透明的,不显示控件的不可见部分上的控件.
有没有机会完全渲染?
当然,只需使用面板的DrawToBitmap()方法.它不是100%可靠,面板上可能有不支持它的控件.像RichTextBox,WebBrowser或某种第三方ActiveX控件.
private static Image PanelToBitmap(Control pnl) {
var bmp = new Bitmap(pnl.Width, pnl.Height);
pnl.DrawToBitmap(bmp, new Rectangle(0, 0, bmp.Width, bmp.Height));
return bmp;
}
Run Code Online (Sandbox Code Playgroud)