主题:[讨论]如何截取MDI子窗体的屏幕(当MDI子窗体被挡住时)
天天学习
[专家分:4570] 发布于 2009-03-23 16:35:00
我用getDC,BitBlt函数做截图时,如果子窗体在屏幕上是完全可见的,没有被其它窗体挡住时,可以正确地截图,显示在一个pictureBox里,但如果子窗体被其它的子窗体或者MdiMain主窗体挡住之后,就截取到了不需要的部分图片。
怎样才能在即使窗体被挡住,仍然能取得该窗体的图像?
最后更新于:2009-03-23 21:42:00
回复列表 (共8个回复)
沙发
tanchuhan [专家分:15140] 发布于 2009-03-23 17:05:00
PrintWindow
板凳
天天学习 [专家分:4570] 发布于 2009-03-23 17:16:00
不行啊,被MDI主窗体挡住部分是黑色的。被其它子窗口挡住部分可以显示.
3 楼
tanchuhan [专家分:15140] 发布于 2009-03-23 18:04:00
发个简单的示例工程出来,我试下.
4 楼
天天学习 [专家分:4570] 发布于 2009-03-23 21:45:00
示例已上传。
另外,printWindow不能控制截取的范围以及绘图时的大小?又一个缺憾
5 楼
tanchuhan [专家分:15140] 发布于 2009-03-23 22:10:00
看了的确如此
[quote]printWindow不能控制截取的范围以及绘图时的大小?又一个缺憾[/quote]
可以创建一个内存DC,先整个截过去,再在内存DC中用Bitblt截你需要部分到你想显示的地方.
可以看下这个:[url]http://www.programfan.com/club/post-281515.html[/url]
另外,你可以这样做,创建一个内存DC,所有绘图都在这个DC上操作,需要显示时再Bitblt到你需要显示的地方.这个方法缺点在于所有操作都要用API来完成(但个人认为绘图效率比VB语句高很多).
6 楼
天天学习 [专家分:4570] 发布于 2009-03-24 13:49:00
对于普通的窗体还是可以,但被MDI主窗体挡住后,还是不行。
暂时只好把这个窗体的MDIChild属性设置为False,把它当成一个普通窗口。不影响整体进度才是最重要的。
7 楼
plxlgs [专家分:0] 发布于 2009-03-27 22:33:00
隐藏挡住的窗口即可
8 楼
天天学习 [专家分:4570] 发布于 2009-04-01 16:26:00
hu shuo ba dao
我来回复