📜  将选取框放入 vb.net - VBA (1)

📅  最后修改于: 2023-12-03 15:25:22.392000             🧑  作者: Mango

在 VB.NET 中将选取框放置

在 VB.NET 中,您可以将选取框用作用户界面的一部分,以使用户能够选择或拖动特定区域。

创建选取框

要创建一个选取框,请在窗体或用户控件上放置一个 PictureBox 控件,并设置其 BorderStyle 属性,在您的代码中,使用以下语句来创建一个选取框对象:

Dim rect As New Rectangle(x, y, width, height)

其中,x 和 y 是选取框的左上角的坐标,width 和 height 是选取框的宽度和高度。

显示选取框

要在窗体或用户控件中显示选取框,请在 PictureBox 的 Paint 事件中使用以下语句:

Dim g As Graphics = e.Graphics
g.DrawRectangle(Pens.Black, rect)
移动选取框

在 VB.NET 中,您可以使用鼠标事件来移动选取框。下面是一个示例代码:

Private startX, startY As Integer
Private rect As Rectangle

Private Sub PictureBox1_MouseDown(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles PictureBox1.MouseDown
    startX = e.X
    startY = e.Y
End Sub

Private Sub PictureBox1_MouseMove(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles PictureBox1.MouseMove
    If e.Button = Windows.Forms.MouseButtons.Left Then
        rect.X = rect.X - (startX - e.X)
        rect.Y = rect.Y - (startY - e.Y)
        startX = e.X
        startY = e.Y
        PictureBox1.Invalidate()
    End If
End Sub

Private Sub PictureBox1_Paint(ByVal sender As Object, ByVal e As System.Windows.Forms.PaintEventArgs) Handles PictureBox1.Paint
    Dim g As Graphics = e.Graphics
    g.DrawRectangle(Pens.Black, rect)
End Sub
调整选取框大小

您可以使用八个调整手柄来调整选取框的大小和形状。以下是一个示例代码:

Private Enum ResizeDirection
    None
    TopLeft
    Top
    TopRight
    Right
    BottomRight
    Bottom
    BottomLeft
    Left
End Enum
Private Enum ResizeMode
    None
    Move
    Resize
End Enum
Private mouseOffset As Point
Private resizeOffset As Point
Private resizing As ResizeDirection = ResizeDirection.None
Private resizeMode As ResizeMode = ResizeMode.None

Private Sub PictureBox1_MouseDown(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles PictureBox1.MouseDown
    ' ...
    Me.resizeMode = ResizeMode.None
    Me.resizing = CheckResizeDirection(e.Location)
End Sub

Private Sub PictureBox1_MouseMove(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles PictureBox1.MouseMove
    If Me.resizeMode = ResizeMode.None Then
        Me.resizeMode = GetResizeMode(e.Location, Me.resizing)
        Select Case Me.resizeMode
            Case ResizeMode.Move
                MoveRectangle(e.Location)
                PictureBox1.Invalidate()
            Case ResizeMode.Resize
                If Me.resizing <> ResizeDirection.None Then
                    ResizeRectangle(e.Location)
                    PictureBox1.Invalidate()
                End If
        End Select
    Else
        If Me.resizeMode = ResizeMode.Resize AndAlso Me.resizing <> ResizeDirection.None Then
            ResizeRectangle(e.Location)
            PictureBox1.Invalidate()
        End If
    End If
End Sub

本代码演示了如何使用选取框在 VB.NET 中运动和调整大小。