VB: 如何让图片框上的按钮透明?

VB: How can I make buttons over a picture box transparent?

在我的程序中,我有一个具有特定宽度 x 和高度 y 的图片框。然后用户可以输入一个元素大小(例如 10),然后程序将在图片框上创建具有元素大小宽度和高度的按钮。问题是这些按钮需要是透明的,所以只有它们的边框是可见的。这意味着通过按钮你可以看到图片框的内容。

所以这是我在单击开始按钮时创建这些按钮的代码:

Imports System.Math
Public Class Form1
Dim x As Double
Dim y As Double
Dim elsize As Integer
Dim numberofbuttons As Integer


Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    x = 400
    y = 200
    elsize = 20

    numberofbuttons = Round(x / elsize) * Round(y / elsize)
    Dim i As Integer
    Dim j As Integer
    For j = 1 To Round(y / elsize)
        For i = 1 To Round(x / elsize)
            Dim Btn As New Button
            Btn.Width = elsize
            Btn.Height = elsize
            Btn.Location = New Point(elsize * (i - 1), elsize * (j - 1))
            Btn.BackColor = Color.Transparent
            PictureBox1.Controls.Add(Btn)

        Next
    Next

End Sub
End Class

我用

Btn.BringToFront()

把这些按钮放在图片框前面,我想用

Btn.BackColor = Drawing.Color.Transparent

使它们透明,但这行不通。有没有人有任何想法如何做到这一点?我还想将这些按钮放在图片框的坐标系中,而不是 form1 的坐标系中。我认为这可以通过

Btn.Parent = PictureBox1

但是按钮始终使用窗体的坐标系。

在此先感谢您的帮助。

这个:

Me.Controls.Add(Btn)

正在将 ButtonParent 设置为表格。您不会 Add 给一个父级并明确分配另一个父级。做一个或另一个。简而言之,摆脱那个 Add 电话,你应该可以开始了。或者,摆脱对 PictureBoxControls 集合的 Parent 分配和 Add。我建议后者。

无论如何,在配置 Button 之前不要显示它,即设置 Parent 或最后调用 Controls.Add

编辑:我测试了这段代码,它按预期工作:

Dim btn As New Button

With btn
    .Size = mySize
    .Location = myLocation
    .BackColor = Color.Transparent
    .FlatStyle = FlatStyle.Flat

    PictureBox1.Controls.Add(btn)
End With