首页
社区
课程
招聘
[郁闷]Aero时慎用GetPixel
发表于: 2007-7-26 17:20 5547

[郁闷]Aero时慎用GetPixel

2007-7-26 17:20
5547
一个程序,在xp下完全正确运行,其中有一步是获得某个窗口的一个像素

在vista 下不开aero,GetPixel函数是正常的。

一旦开了aero效果GetPixel总是返回第一次的值,郁闷中……

(不知道在vista HomeBasic里是否存在这个问题)

经过再三证实,是GetPixel的问题

已经乱试了很多函数了,比如InvalidateRect,UpdateWindow.....并不奏效

vista新出不久,网上也查不到这方面的资料(msdn.com上只有说GetPixel速度慢的,并没出现类似的问题)

请问我该如何做? 谢谢!

[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

收藏
免费 0
支持
分享
最新回复 (3)
雪    币: 214
活跃值: (11)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
2
包括BitBlt也同样的结果。

大概和要get的那个界面是用directx画的也有关。

在通常的情况下aero中GetPixel还是正常的。

为啥对同样的窗口操作vista开了aero就不行...郁闷中……
2007-7-26 19:58
0
雪    币: 321
活跃值: (271)
能力值: ( LV13,RANK:1050 )
在线值:
发帖
回帖
粉丝
3
呵呵,我也有同样的困惑
2007-7-27 15:57
0
雪    币: 214
活跃值: (11)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
4
现在更郁闷.......

上面的问题通过访问屏幕dc解决了。
然而aero下访问屏幕相当的慢,无论是GetWindowDC(GetDesktopWindow()...)还是CreateDC("DISPLAY"...)建立起来的。
GetPixel的速度狂慢(汗..)即使总共只读取64个像素,需要将近6秒才能完成64个像素的读取。
然而同样在vista下若关闭aero这份工作瞬间(<1~2ms)就能解决……

网上早已有前辈发现这个问题了...他还做了试验描述如下:

http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=545838&SiteID=1

汗涔涔,这时候只想说一句话:Aero真是个新鲜东西 :)
2007-7-27 17:06
0
游客
登录 | 注册 方可回帖
返回
//