我有一个按钮,我制作成扁平的,没有边框,因此当其中有图像时,它看起来是无缝的。
我想要添加到此按钮的图像基本上只是一个未填充的矩形(来自文件的 png)。
当我将鼠标悬停在该按钮上时,背景颜色变为红色。当它发生时,作为图像的矩形显然不会变成红色......它保持图像中的任何颜色。
我想知道是否有办法添加图像,谁的实际背景色是透明的(我想?)。
该图像是一个蓝色矩形,具有非常非常浅的棕色背景。当我将鼠标悬停时,我希望整个按钮的背景色为红色,但只保留蓝色矩形。现在,当您将鼠标悬停时,您可以清楚地看到图像本身的大小。
我不想在按钮上绘制图形。 (实际上,该图像是计算机显示器的轮廓......但在本例中它本质上是一个矩形)
有没有办法使用 Image 或 BackgroundImage 属性来做到这一点?
最佳答案
将您的图像放入资源
(项目/属性/资源/图像/添加资源,然后从下拉菜单中选择添加现有文件...)。
然后使用此代码:
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
With Button1
.Text = ""
.UseVisualStyleBackColor = False
.BackColor = Color.Transparent
.FlatStyle = FlatStyle.Flat
.FlatAppearance.BorderSize = 0
.FlatAppearance.MouseOverBackColor = Color.Red
.BackgroundImageLayout = ImageLayout.Center
.BackgroundImage = My.Resources.XXX 'image name from Resources
End With
End Sub
Private Sub Button1_MouseHover(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button1.MouseHover
With Button1
.BackgroundImage = Nothing
.FlatAppearance.BorderColor = Color.Blue
.FlatAppearance.BorderSize = 2 'or what is size of Your border in px (take from Your image)
End With
End Sub
Private Sub Button1_MouseLeave(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button1.MouseLeave
With Button1
.BackColor = Color.Transparent
.BackgroundImage = My.Resources.XXX 'image name from Resources
.FlatAppearance.BorderSize = 0
End With
End Sub
当然,您可以创建自己的按钮(类)并导入到您的项目中,这样您就可以避免每个按钮的 MouseHover
和 MouseLeave
。
边框
并且图像的背景
不是渐变的,那么您可以在没有图像的情况下完成所有这些操作。那么你就可以避免 MouseHover
和 MouseLeave
。
编辑:
如果您不需要图像,则有代码(按钮边框始终为2px
的蓝色
,背景颜色为某种浅棕色,悬停时背景颜色为红色但边框保持蓝色(2px)。
With Button2
.UseVisualStyleBackColor = False
.BackColor = Color.FromArgb(217, 195, 154)
.FlatStyle = FlatStyle.Flat
.FlatAppearance.BorderSize = 2
.FlatAppearance.BorderColor = Color.Blue
.FlatAppearance.MouseOverBackColor = Color.Red
End With
关于vb.net - 按钮图像、透明度、鼠标悬停颜色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31568506/