在解决方案中:
新建一个new class:myScreen
引用:
这一次多出一个System.Windows.Forms,因为我们需要用到button事件
接着写入三段函数
Public Class myScreen
Public Image As Bitmap
Private ispick As Boolean = False
Private bmp As Bitmap
Private g As Graphics
''' <summary>
''' 注意,请不要单独调用此函数,并且,该函数对应的button事件为MouseDown。获取鼠标情况并返回鼠标样式
''' </summary>
''' <param name="e">鼠标事件,是左键</param>
''' <param name="cur">传入鼠标的样式,并返回一个鼠标样式为Cross</param>
''' <returns></returns>
Public Function PickColorDown(e As MouseEventArgs, cur As Cursor)
If e.Button = MouseButtons.Left Then
ispick = True
Dim scr As Screen = Screen.PrimaryScreen
Dim recSc As Rectangle = scr.Bounds
bmp = New Bitmap(recSc.Width, recSc.Height)
g = Graphics.FromImage(bmp)
g.CopyFromScreen(New Point(0, 0), New Point(0, 0), New Size(recSc.Width, recSc.Height))
cur = Cursors.Cross
Return cur
End If
End Function
''' <summary>
''' 注意,请不要单独调用此函数,并且,该函数对应的button事件为MouseMove。获取鼠标情况并返回鼠标指针区域的颜色
''' </summary>
''' <param name="e">鼠标事件</param>
''' <param name="but">获取button</param>
''' <returns></returns>
Public Function PickColorMove(e As MouseEventArgs, but As Button)
Dim x, y As Integer
Dim p As Point = New Point(e.X, e.Y)
Dim colorpoint As Color
If ispick = True Then
x = but.PointToScreen(p).X
y = but.PointToScreen(p).Y
colorpoint = bmp.GetPixel(x, y)
Return colorpoint
End If
End Function
''' <summary>
''' 注意,请不要单独调用此函数,并且,该函数对应的button事件为MouseUp。获取鼠标情况并返回鼠标样式
''' </summary>
''' <param name="cur">传入鼠标的样式,并返回一个鼠标样式为Default</param>
''' <returns></returns>
Public Function PickColorUp(cur As Cursor)
ispick = False
cur = Cursors.Default
Return cur
End Function
End Class
这里参考了一下VB.net大佬的文章。
窗体上的调用:
在前面:声明一下myScreen的类
Public GDIscr As New GDI_Make_NET4_5.myScreen
代码加入:
Private Sub Button3_MouseDown(sender As Object, e As MouseEventArgs) Handles Button3.MouseDown
Cursor = GDIscr.PickColorDown(e, Cursor)
End Sub
Private Sub Button3_MouseMove(sender As Object, e As MouseEventArgs) Handles Button3.MouseMove
Pic.BackColor = GDIscr.PickColorMove(e, Button3)
End Sub
Private Sub Button3_MouseUp(sender As Object, e As MouseEventArgs) Handles Button3.MouseUp
Cursor = GDIscr.PickColorUp(Cursor)
End Sub
看看: