各位高手:如何获得指定屏幕坐标处色彩,并对两处色彩进行比较模糊的对比,请举一例,谢谢!
解决方案 »
- 关于屏保鼠标的问题
- 大家用宽屏笔记本做软件吗?
- 怎样限制textbox 里面输入日期格式?
- 如何在ActiveX DLL里面声明使用ActiveX控件?请大家帮忙呀,我要急死了,只要是建议性的提示,保证送分,有实例者保证另开贴赠100分回报
- 一个小问题
- 获取路径问题!类似于在本地磁盘上点击右键-〉选择瑞星杀毒,瑞星就会识别出相应的磁盘路径进行杀毒!
- 请教专家关于VB安装程序的问题
- 请问如何捕获rtf控件中的一个ole对象的click事件??
- 关于内存管理中的常数
- 我用VB的ado控件的 rs.addnew方法向数据库(MDB的)写数据,为什么数据库中就一下多了很多的空的表?这些表是干什么的呢?
- (XP100分问题)有关exe在XP下,超不解的问题。高手请看一看呀。help me
- 运行VB编写的程序后,程序不定时的就与VB一起关闭了,是为什么啊?
Declare Function GetPixel Lib "gdi32" Alias "GetPixel" (ByVal hdc As Long, ByVal x As Long, ByVal y As Long) As Long
说明
在指定的设备场景中取得一个像素的RGB值
返回值
Long,指定点的RGB颜色。如指定的点位于设备场景的剪切区之外,则返回CLR_INVALID
参数表
参数 类型及说明
hdc Long,一个设备场景的句柄
x,y Long,逻辑坐标中要检查的点
Private Sub Command1_Click()
Me.ScaleMode = 3
PSet (100, 100), vbBlue 'SET COLOR
PSet (100, 50), vbBlue
PSet (50, 50), vbRed
MsgBox Hex(GetPixel(Me.hdc, 100, 100)) 'VBBLUE
MsgBox Hex(GetPixel(Me.hdc, 50, 50)) 'VBRED
MsgBox GetPixel(Me.hdc, 50, 50) = GetPixel(Me.hdc, 100, 50) 'DIFFERENT COLOR
MsgBox GetPixel(Me.hdc, 100, 100) = GetPixel(Me.hdc, 100, 50) ' SAME COLOR
End Sub
函数的返回值是一个平均色差,你可以设定返回值小于某个限定值,则为相同颜色。
function compareColor(color1 as long,color2 as long) as double
dim red1,green1,blue1,red2,green2,blue2
red1=color1 and &hff
geen1=cint(color1/&h100) and &hff
blue1=cint(color1/&h10000) and &hffred2=color2 and &hff
geen2=cint(color2/&h100) and &hff
blue2=cint(color2/&h10000) and &hff
compareColor=(((red1-red2)^2+(green1-green2)^2+(blue1-blue2)^2)/3)^0.5
end function
1.根据坐标x,y和函数WindowFromPoint 获取该坐标窗体
2.GetDC获取窗体hDC
3.ScreenToClient 获取该坐标在窗体中的相对坐标,cx,cy
4.用GetPixel(hdx,cx,cy)
所求点在全屏的 (10,200 ) 处,
请给个完整的程序,谢谢!!
dim pt as POINT
dim hWnd as LONG
dim hDC as LONG
dim color1 as long
pt.x=10:pt.y=200
hWnd=WindowFromPoint(pt)
hDC=GetDC(hWnd)
ScreenToClient(hWnd,pt)
color1=GetPixel(hDC,pt.x,pt.y)
dim clr as long
dim hdc as Long
hdc = GetDC(0)
clr=GetPixel(hdc,10,20)