搜索
您的当前位置:首页正文

获取屏幕任意一点的颜色

来源:哗拓教育


获取屏幕任意一点的颜色

新建一个VB6工程,在Form1上增加一个Timer空间,设置Enabled=True,Interval=100来测试效果.

注意,我的输出在立即窗口中,如果您没有打开立即窗口,可能看不到程序运行的效果,请在IDE中按Ctrl+G打开立即窗口.

代码如下:

Option Explicit

'定义一个POINTAPI

Private Type POINTAPI

x As Long

y As Long

End Type

'定义一个GRB结构

Private Type STRUCTRGB

Red As Integer

Green As Integer

Blue As Integer

End Type

'Windows API 声明

Private Declare Function GetCursorPos Lib \"user32\" (lpPoint As POINTAPI) As Long

Private Declare Function GetDC Lib \"user32\" (ByVal hWnd As Long) As Long

Private Declare Function GetPixel Lib \"gdi32\" (ByVal hDC As Long, ByVal x As Long, ByVal y As Long) As Long

Private Sub Timer1_Timer()

On Error Resume Next

Dim myRgb As STRUCTRGB

myRgb = getColor()

Form1.BackColor = RGB(myRgb.Red, myRgb.Green, myRgb.Blue)

Debug.Print myRgb.Red; myRgb.Green; myRgb.Blue

End Sub

'测试颜色函数,给定屏幕任意坐标的x值和y值以及颜色的Long形式值,返回True or False

Private Function ifColor(ByVal x As Long, ByVal y As Long, ByVal color As Long) As Boolean

On Error Resume Next

Dim nTmpColor As Long

nTmpColor = GetPixel(GetDC(0), x, y)

ifColor = (color = nTmpColor)

End Function

'获取屏幕任意一点的颜色,返回GRB结构

Private Function getColor() As STRUCTRGB

On Error Resume Next

Dim tpTemp As POINTAPI

Call GetCursorPos(tpTemp) '获取鼠标位置

Dim myColor As Long

myColor = GetPixel(GetDC(0), tpTemp.x, tpTemp.y) '获取鼠标所在位置颜色的Long值

'分离颜色

getColor.Red = myColor And &HFF

getColor.Green = (myColor And &HFF00&) \\ &H100

getColor.Blue = (myColor And &HFF0000) \\ &H10000

End Function

因篇幅问题不能全部显示,请点此查看更多更全内容

Top