回 帖 发 新 帖 刷新版面

主题:[讨论]如何截取MDI子窗体的屏幕(当MDI子窗体被挡住时)

我用getDC,BitBlt函数做截图时,如果子窗体在屏幕上是完全可见的,没有被其它窗体挡住时,可以正确地截图,显示在一个pictureBox里,但如果子窗体被其它的子窗体或者MdiMain主窗体挡住之后,就截取到了不需要的部分图片。
怎样才能在即使窗体被挡住,仍然能取得该窗体的图像?

回复列表 (共8个回复)

沙发

PrintWindow

板凳

不行啊,被MDI主窗体挡住部分是黑色的。被其它子窗口挡住部分可以显示.

3 楼

发个简单的示例工程出来,我试下.

4 楼

示例已上传。
另外,printWindow不能控制截取的范围以及绘图时的大小?又一个缺憾

5 楼

看了的确如此

[quote]printWindow不能控制截取的范围以及绘图时的大小?又一个缺憾[/quote]
可以创建一个内存DC,先整个截过去,再在内存DC中用Bitblt截你需要部分到你想显示的地方.
可以看下这个:[url]http://www.programfan.com/club/post-281515.html[/url]

另外,你可以这样做,创建一个内存DC,所有绘图都在这个DC上操作,需要显示时再Bitblt到你需要显示的地方.这个方法缺点在于所有操作都要用API来完成(但个人认为绘图效率比VB语句高很多).

6 楼

对于普通的窗体还是可以,但被MDI主窗体挡住后,还是不行。
暂时只好把这个窗体的MDIChild属性设置为False,把它当成一个普通窗口。不影响整体进度才是最重要的。

7 楼

隐藏挡住的窗口即可

8 楼

hu shuo ba dao

我来回复

您尚未登录,请登录后再回复。点此登录或注册