源码地址:
http://mlzboy.jahee.com/pickcolor.rar
这是一个实现取色器功能的程序,有两个问题有解决,还请高手帮忙
1.在点击取色按钮后,我想在全屏可以取色,当点击鼠标左键后,就不进行取色了(不知道该如何获取鼠标点击这个事件,如果是在窗体里我是知道的,但是现在是在全屏上)
2.第二个是左上角的放大镜中的十字按钮,本来的意图是十字的交点就是鼠标指的那个点,但是现在好像对不准,肯请高手帮忙
http://mlzboy.jahee.com/pickcolor.rar
这是一个实现取色器功能的程序,有两个问题有解决,还请高手帮忙
1.在点击取色按钮后,我想在全屏可以取色,当点击鼠标左键后,就不进行取色了(不知道该如何获取鼠标点击这个事件,如果是在窗体里我是知道的,但是现在是在全屏上)
2.第二个是左上角的放大镜中的十字按钮,本来的意图是十字的交点就是鼠标指的那个点,但是现在好像对不准,肯请高手帮忙
用GetDC(0)获得屏幕DC,然后用GetPixel获像素值。
2、这个可能和这个光标本身的问题,但是你可以自己计算误差是多少,再读取
用自己的一个全屏窗口把屏幕拷贝下来,再随便去就得了;还可以用鼠标钩子之类的方法,不过较难
加上这段就可以直接用鼠标拖动取色~Private Sub Command6_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
Timer1_Timer
End Sub
If Button = vbLeftButton Then
Timer1_Timer
Command6.MousePointer = 2
Else
Command6.MousePointer = 0
End If
End Sub
' 声明 SetCapture
Private Declare Function SetCapture Lib "user32" (ByVal hwnd As Long) As Long' 将你的 Command6_Click 过程改为
Private Sub Command6_Click()
SetCapture Me.hwnd
Timer1.Enabled = True
End Sub' 然后增加 Form_MouseDown 事件
Private Sub Form_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
Timer1.Enabled = False
End Sub' 因为要手动点击鼠标,所以无需使用 ReleaseCapture 来释放鼠标至于第二个问题,你可以在调试程序的时候同时打开别人的类似软件,看看他的中心和你的中心相不相同,如果不相同的话则重新设置十字偏移