如何获取最小化窗口内的颜色点的值?rt窗口内容是在不停变化的,不要想着先恢复窗口,再截图到内存,或者最小
如何获取最小化窗口内的颜色点的值?
rt
窗口内容是在不停变化的,不要想着先恢复窗口,再截图到内存,或者最小化前先截屏之类的方法。
所有方法请先验证可行后再回复。
谢谢!
我的实验结果是,最小化以后DC中没有保留位图信息,所以不管取哪个点都是返回的 -1
那么,OS中肯定有地方保留了这个窗口的颜色信息,否则不可能恢复窗口的时候可以重画。
问题是,保存在哪里,如何取到保存的信息?
如果可以根据窗口句柄取到这些信息 那就可以自己创建内存位图来获取颜色了。
解决问题200分送上。
[解决办法]
这个好像挺有趣的,回头我试一下。
[解决办法]
我想这个问题是这样的:
用VB的窗体来举例子可能会理解的快一点,我们知道窗口有一个AutoDraw属性,当它为真时,无论窗口是否可见,OS都为其开辟一块内存来保存窗口中的图像,当然,这样会很浪费系统资源,因此,绝大多数窗口的这个属性都是Flase,这样,当窗口最小化时,用来绘制窗口的内存就被释放了。所以,你是不会得到窗口中的图像的。
当窗口恢复时,其实是重绘了整个窗口,重绘窗口的依据是根据程序的当前状态来绘制的。我们可以举一个简单的示例:
第一种,窗口的AutoRedaw为False,如果想保持窗口最小化,或被其他窗口摭挡后再恢复上面的图形,则需要将绘图语句写在Paint事件中。
- VB code
Private Sub Form_Load() Me.AutoDraw=False Me.ScaleMode = vbPixelsEnd SubPrivate Sub Form_Paint() Me.Line (10, 10)-(Me.ScaleWidth - 10, Me.ScaleHeight - 10), , BEnd Sub
