vb.net - 按钮图像、透明度、鼠标悬停颜色

标签 vb.net image transparency

我有一个按钮,我制作成扁平的,没有边框,因此当其中有图像时,它看起来是无缝的。

我想要添加到此按钮的图像基本上只是一个未填充的矩形(来自文件的 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

当然,您可以创建自己的按钮(类)并导入到您的项目中,这样您就可以避免每个按钮的 MouseHoverMouseLeave

顺便说一句。如果您的图片只有边框并且图像的背景不是渐变的,那么您可以在没有图像的情况下完成所有这些操作。那么你就可以避免 MouseHoverMouseLeave

编辑: 如果您不需要图像,则有代码(按钮边框始终为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/

相关文章:

javascript - 包括特定于 ASP.NET MVC4 View 或部分 View 的脚本

jquery - 使用 jquery 动态调整图像大小

c# - VB 编译器不隐式转换为对象?

vb.net - vb.net 中的 Code 128 条形码生成

.net - 使用反射获取类型的静态字段值

java - 显示来自 java 应用程序上下文外部的图像。

Java-如何将黑白图像加载到二进制中?

Python:反转具有透明背景的图像(PIL,Gimp,...)

c# - 窗体的透明背景图像 - 窗体的平滑边缘形状

html - 如何在不使用不透明度属性的情况下将透明背景色应用于分区