首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VB >

问个图片处理的有关问题

2012-02-23 
问个图片处理的问题我想获得一个被其他窗口覆盖的flash的某点颜色信息。代码是这样写的。134170是flash的句

问个图片处理的问题
我想获得一个被其他窗口覆盖的flash的某点颜色信息。代码是这样写的。
134170是flash的句柄。
在getpixel(DestDC, pos.x, pos.y)提示我“无效属性”

应该如何获得呢?
另外getpixel这么操作是不是会比较慢,有没有更快的方法?

VB code
Private Declare Function GetCursorPos Lib "user32" (lpPoint As POINTAPI) As LongPrivate Declare Function getpixel Lib "gdi32" Alias "GetPixel" (ByVal hDC As Long, ByVal x As Long, ByVal y As Long) As LongPrivate Declare Function GetDC Lib "user32" (ByVal hWnd As Long) As LongPrivate Declare Function CreateCompatibleDC Lib "gdi32" (ByVal hDC As Long) As LongPrivate Declare Function PrintWindow Lib "user32" (ByVal SrcHwnd As Long, ByVal DesHDC As Long, ByVal uFlag As Long) As LongPrivate Type POINTAPIx As Longy As LongEnd TypeDim myhDC As LongDim pos As POINTAPIPrivate Sub Form_Load()Timer1.Enabled = TrueTimer1.Interval = 50End SubPrivate Sub Timer1_Timer()GetCursorPos posText1.Text = "(" & pos.x & "," & pos.y & ")"sourceDc = GetDC(134170)DestDC = CreateCompatibleDC(sourceDc)PrintWindow Text1.Text, DestDC, 0'Text2.Text = getpixel(myhDC, pos.x, pos.y)Picture1.BackColor = getpixel(DestDC, pos.x, pos.y)End Sub


[解决办法]
CreateCompatibleDC和PrintWindow是多余的,而且CreateCompatibleDC用法也有问题,创建了内存DC,还有创建相应的位图并选入DC中,才能用GetPixel去获得DC中位图某一点的颜色,而GetDC本身就包含了指定hWnd的位图,不需要再用CreateCompatibleDC和PrintWindow。
如果觉得getpixel速度慢,可以使用GetObject+obj_bitmap来获得位图数据,用VB模拟指针直接访问位图数据,速度将有极大提高。

热点排行