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)
正在将 Button
的 Parent
设置为表格。您不会 Add
给一个父级并明确分配另一个父级。做一个或另一个。简而言之,摆脱那个 Add
电话,你应该可以开始了。或者,摆脱对 PictureBox
的 Controls
集合的 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
在我的程序中,我有一个具有特定宽度 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)
正在将 Button
的 Parent
设置为表格。您不会 Add
给一个父级并明确分配另一个父级。做一个或另一个。简而言之,摆脱那个 Add
电话,你应该可以开始了。或者,摆脱对 PictureBox
的 Controls
集合的 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