VB.NET 图片框/控件

Posted

技术标签:

【中文标题】VB.NET 图片框/控件【英文标题】:VB.NET PictureBox / Controls 【发布时间】:2014-06-27 15:45:03 【问题描述】:

如此有趣的困境,我设法使标签完全不可见,以便我可以将其用于图片某些部分的点击事件。

然后,我使用该点击事件通过 picturebox3.visible = true 将另一个图片框调用为焦点。

我遇到的问题是当它调用图片框可见性时。新图片框(不可见标签)中的控件似乎无法正常工作或完全从图片框2中的图片中丢失。

我需要使用大约 30 张不同的图片来为某人创建一种“模拟器”项目。

对此有什么想法吗?如果需要,我可以发布代码。图片框 + 图片框上的控件 = 头痛。

    Public Class InvisibleLabel
Inherits Label

Public Sub New()
    Me.SetStyle(ControlStyles.Opaque, True)
    Me.SetStyle(ControlStyles.OptimizedDoubleBuffer, False)
End Sub
Protected Overrides ReadOnly Property CreateParams() As System.Windows.Forms.CreateParams
    Get
        Dim CC As CreateParams = MyBase.CreateParams
        CC.ExStyle = CC.ExStyle Or &H20
        Return CC
    End Get
End Property

结束类

这是不可见标签的代码,然后我只是在点击图片的某些部分时使用picturebox2.visible = true。

【问题讨论】:

摆脱标签。只需使用 PictureBox MouseDown 事件,检查坐标等。如果您有代码,那么是的,发布它。 已更新。代码非常简单,我只是不确定如何处理 mousedown 事件。 【参考方案1】:

我做了 3 个文本框

textbox1 for X '仅供您查看

textbox2 for Y '仅供您查看

CurPicture 比较当前图像

我的图片框是 300,300

Private Sub PictureBox1_MouseClick(sender As Object, e As MouseEventArgs) 处理 PictureBox1.MouseClick

    Dim LocX As Integer = e.X
    Dim LocY As Integer = e.Y
    TextBox1.Text = e.X.ToString
    TextBox2.Text = e.Y.ToString

    If LocX > 200 Then ' click right side op the picture , change LocX With LocY to make it bottom
        If CurPicture.Text = "1" Then
            PictureBox1.Image = My.Resources.Pic2
            CurPicture.Text = "2"
        ElseIf CurPicture.Text = "2" Then
            PictureBox1.Image = My.Resources.Pic3
            CurPicture.Text = "3"
        ElseIf CurPicture.Text = "3" Then
            PictureBox1.Image = My.Resources.Pic4
            CurPicture.Text = "4"
        ElseIf CurPicture.Text = "4" Then
            PictureBox1.Image = My.Resources.Pic5
            CurPicture.Text = "5"
        ElseIf CurPicture.Text = "5" Then
            PictureBox1.Image = My.Resources.Pic1
            CurPicture.Text = "1"
        End If
    End If

End Sub

Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
    PictureBox1.Image = My.Resources.Pic1
    CurPicture.Text = "1"
End Sub

希望这将帮助您继续前进:)

【讨论】:

【参考方案2】:

用途:

Private Sub PictureBox_MouseDown(sender As Object, e As MouseEventArgs) _
  Handles PictureBox.MouseDown

    'The code to change the picture goes here

End Sub

【讨论】:

我该如何为特定区域设置呢?这就是让我感动的部分,我知道我可以在右下角看到 X、Y,但我如何使用它来设置点击区域来做特定的事情?

以上是关于VB.NET 图片框/控件的主要内容,如果未能解决你的问题,请参考以下文章

VB.NET 如何去掉 GroupBox 控件的边框?

图片不会在图片框中更改,vb.net

图片框覆盖 vb.net

如何应用VB.NET MonthCalendar控件

VB.NET:PictureBox 视图范围?

如何将图像从一个图片框传输到另一个图片框? VB.NET 和 SQL