VB.net类库,获取屏幕内鼠标下的颜色(进阶——3)

20 篇文章 1 订阅
17 篇文章 1 订阅

在解决方案中:

新建一个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

看看:

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值