如何制作snapline? [英] How to make snapline ?

查看:114
本文介绍了如何制作snapline?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

当我移动鼠标时,我想在VS 2017中创建相同的快照线。

因为我这样做的方式并不好。

谢谢大家。

推荐答案

您好,

尝试代码:

Public Class Form1
    
    Public ptSnap, ptStart, ptEnd As Point
    Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
        Me.Text = "Snap Demo"
        Me.ClientSize = New Size(800, 600)
        Me.FormBorderStyle = Windows.Forms.FormBorderStyle.FixedSingle
        Me.MaximizeBox = False
        Me.StartPosition = FormStartPosition.CenterScreen
        Me.DoubleBuffered = True
    End Sub
    Protected Overrides Sub OnPaint(ByVal e As System.Windows.Forms.PaintEventArgs)
        MyBase.OnPaint(e)
        e.Graphics.Clear(Color.Black)
        For row As Integer = 20 To 780 Step 20
            For col As Integer = 20 To 580 Step 20
                e.Graphics.DrawEllipse(Pens.Blue, New Rectangle(row - 2, col - 2, 4, 4))
            Next
        Next
        e.Graphics.DrawLine(Pens.Red, ptStart, ptEnd)
    End Sub
    Protected Overrides Sub OnMouseDown(ByVal e As System.Windows.Forms.MouseEventArgs)
        MyBase.OnMouseDown(e)
        Dim x As Integer = CInt(e.X / 20) * 20
        Dim y As Integer = CInt(e.Y / 20) * 20
        ptStart = New Point(x, y)
        ptSnap = New Point(x, y)
        Windows.Forms.Cursor.Position = Me.PointToScreen(ptSnap)
    End Sub
    Protected Overrides Sub OnMouseMove(ByVal e As System.Windows.Forms.MouseEventArgs)
        MyBase.OnMouseMove(e)
        If e.Button = Windows.Forms.MouseButtons.Left Then
            Dim x As Integer = CInt(e.X / 20) * 20
            Dim y As Integer = CInt(e.Y / 20) * 20
            If (x < ptSnap.X - 15 Or x > ptSnap.X + 15) Or (y < ptSnap.Y - 15 Or y > ptSnap.Y + 15) Then
                ptSnap = New Point(x, y)
                ptEnd = New Point(x, y)
                Me.Invalidate(False)
                Windows.Forms.Cursor.Position = Me.PointToScreen(ptSnap)
            End If
        End If
    End Sub
End Class




最好的问候,


Best Regards,

Alex


这篇关于如何制作snapline?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆