【问题标题】:winform change BackgroundImage property of a button on hoverwinform在悬停时更改按钮的BackgroundImage属性
【发布时间】:2013-04-09 16:52:51
【问题描述】:

我想更改悬停按钮的backgroundImage 属性,如下所示:

    private void btnGetHardwareID_MouseEnter(object sender, EventArgs e)
    {
        btnGetHardwareID.BackgroundImage = (System.Drawing.Image)(Properties.Resources._11949847771696668271pill_button_green_benji__01_svg_med);
        btnGetHardwareID.Refresh();
    }

    private void btnGetHardwareID_MouseLeave(object sender, EventArgs e)
    {
        btnGetHardwareID.BackgroundImage = (System.Drawing.Image)(Properties.Resources._11949847771793996117pill_button_purple_benji_01_svg_med);
        btnGetHardwareID.Refresh();
    }

btnGetHardwareID 的属性如下:

    // btnGetHardwareID
    // 
    this.btnGetHardwareID.BackColor = System.Drawing.Color.Transparent;
    this.btnGetHardwareID.BackgroundImage = global::Travian.Properties.Resources._11949847771793996117pill_button_purple_benji_01_svg_med;
    this.btnGetHardwareID.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Stretch;
    this.btnGetHardwareID.FlatAppearance.BorderSize = 0;
    this.btnGetHardwareID.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
    this.btnGetHardwareID.Font = new System.Drawing.Font("Cambria", 10F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
    this.btnGetHardwareID.ForeColor = System.Drawing.Color.White;
    this.btnGetHardwareID.Location = new System.Drawing.Point(31, 53);
    this.btnGetHardwareID.Name = "btnGetHardwareID";
    this.btnGetHardwareID.Size = new System.Drawing.Size(160, 40);
    this.btnGetHardwareID.TabIndex = 25;
    this.btnGetHardwareID.Text = "Get My Hardware-ID";
    this.btnGetHardwareID.UseVisualStyleBackColor = false;
    this.btnGetHardwareID.Click += new System.EventHandler(this.btnGetHardwareID_Click);
    this.btnGetHardwareID.MouseDown += new System.Windows.Forms.MouseEventHandler(this.btnGetHardwareID_MouseDown);
    this.btnGetHardwareID.MouseEnter += new System.EventHandler(this.btnGetHardwareID_MouseEnter);
    this.btnGetHardwareID.MouseLeave += new System.EventHandler(this.btnGetHardwareID_MouseLeave);
    this.btnGetHardwareID.MouseUp += new System.Windows.Forms.MouseEventHandler(this.btnGetHardwareID_MouseUp);

现在的问题是 MouseEnter 上的 backgroundImage 是这样的:

在 MouseLeave 上是这样的:

绿色按钮周围的灰色背景色是什么,我该如何移除它?

编辑
原图如下:

还有那个MainForm的背景:

提前致谢

【问题讨论】:

  • 我删除了那些 MouseLeave 和 MouseEnter 事件/但仍然有 Hover 上的灰色区域!
  • 您可能忘记让图像在这些角落透明。
  • @Hans Passant 这些图像是 png 格式的,我用 Photoshop 检查了它们的透明,它们没有问题!
  • 我用 png 图像测试你的代码,它工作正常,尝试另一个 png
  • 很难调试截图,我们对容器控件也一无所知。在文件共享服务上发布最低限度的复制项目。

标签: c# winforms button background-image


【解决方案1】:

您正在寻找的解决方案如下。将 FlatAppearance.MouseOverBackColor 设置为透明。

this.btnGetHardwareID.FlatAppearance.MouseOverBackColor = System.Drawing.Color.Transparent;

【讨论】:

    猜你喜欢
    • 2014-05-03
    • 2019-07-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-11-02
    • 2021-05-19
    • 1970-01-01
    • 2016-08-13
    相关资源
    最近更新 更多