在小鋪看到個網友發問個問題,希望能夠在滑鼠座標所在點畫上座標交叉線條。大概效果如下:

[VB.NET]Real-Time Coordinate Crosshair Lines [VB.NET]Real-Time Coordinate Crosshair Lines

這效果其實很容易就可以達到,隨手紀錄一下。

範例程式一

Public Class Form1
    Private Sub Form1_MouseMove(ByVal sender As System.Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles MyBase.MouseMove
        Me.Invalidate()
    End Sub

    Private Sub Form1_Paint(ByVal sender As Object, ByVal e As System.Windows.Forms.PaintEventArgs) Handles Me.Paint
        Dim x As Integer
        Dim y As Integer
        With PointToClient(MousePosition)
            x = .X
            y = .Y
        End With
        With e.Graphics
            .DrawLine(Pens.Black, 0, y, Me.Width, y)
            .DrawLine(Pens.Black, x, 0, x, Me.Height)
        End With
    End Sub
End Class

範例程式二

Public Class Form1
    Dim g As Graphics
    Private Sub Form1_MouseMove(ByVal sender As System.Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles MyBase.MouseMove
        Dim point As Point = PointToClient(MousePosition)
        Dim x As Integer = point.X
        Dim y As Integer = point.Y
        g.Clear(Me.BackColor)
        g.DrawLine(Pens.Black, 0, y, Me.Width, y)
        g.DrawLine(Pens.Black, x, 0, x, Me.Height)
    End Sub

    Public Sub New()

        ' 此為 Windows Form 設計工具所需的呼叫。
        InitializeComponent()

        ' 在 InitializeComponent() 呼叫之後加入任何初始設定。

        g = Me.CreateGraphics
    End Sub
End Class

相關連結

  • 藍色小鋪-(VB.NET 2003)請問要如何在表單內畫出即時線條?