【问题标题】:How to make image button图片按钮的制作方法
【发布时间】:2020-03-30 16:11:43
【问题描述】:

我想知道我该怎么做。我知道我可以使用按钮组件,但是当我给它一个图像时,它周围有一些灰色的小东西。使用图像按钮如何显示另一个图像以实现悬停效果

【问题讨论】:

  • 你说的是 WinForms、WPF 还是 ASP.NET?
  • 我对 WinForms 不是很熟练,但我认为您可以在 ImageButtons 上打开边框和背景,然后,可能会有一些鼠标悬停事件或类似的事件,您可以使用它来更改图片。

标签: c# winforms


【解决方案1】:

您想创建一个没有边框的按钮,但当用户将鼠标悬停在按钮上时会显示不同的图像?你可以这样做:

  1. 在添加两张图片时向表单添加ImageList 控件,一张用于按钮的正常外观,另一张用于鼠标悬停时的外观。

  2. 添加您的按钮并设置以下属性:
    FlatStyle = Flat
    FlatAppearance.BorderColor(可能还有 MouseOverBackColorMouseDownBackColor)为表单的背景颜色
    @987654326 @ = 您添加到表单的 ImageList
    ImageIndex 到您的普通图像的索引值

为按钮编写 MouseHover 和 MouseLeave 事件,如下所示:

// ImageList index value for the hover image.
private void button1_MouseHover(object sender, EventArgs e) => button1.ImageIndex = 1;

// ImageList index value for the normal image.
private void button1_MouseLeave(object sender, EventArgs e) => button1.ImageIndex = 0;

我相信这会给你想要的视觉效果。

【讨论】:

  • 绝对完美
【解决方案2】:

小总结(Border、MouseDownBackColor、MouseOverBackColor)

平面外观

BorderColor = 黑色或任何你想要的
BorderSize = 可以设置为 0
MouseDownBackColor = 透明
MouseOverBackColor = 透明

Text = 无

鼠标按下

// ImageList index value for the mouse down image.
private void button1_MouseDown(object sender, MouseEventArgs e) => button1.ImageIndex = 2;

【讨论】:

    【解决方案3】:

    您可以为按钮分配 BackgroundImage 属性。您还可以使用 OnMouseEnter 和 OnMouseExit 事件根据您的请求更改背景。

    BackgroundImageOnMouseEnterOnMouseLeave

    【讨论】:

      【解决方案4】:

      我还需要一个图像按钮,但我想要一个像 ToolstripMenuButton 这样的按钮。 悬停时具有正确的边框和颜色。 所以我做了一个自定义控件来做到这一点:

      using System;
      using System.ComponentModel;
      using System.Windows.Forms;
      
      namespace LastenBoekInfrastructure.Controls.Controls
      {
          [DefaultEvent("Click")]
          public class ImageButton : UserControl
          {
              public string ToolTipText
              {
                  get { return _bButton.ToolTipText; }
                  set { _bButton.ToolTipText = value; }
              }
      
              public bool CheckOnClick
              {
                  get { return _bButton.CheckOnClick; }
                  set { _bButton.CheckOnClick = value; }
              }
      
              public bool DoubleClickEnabled
              {
                  get { return _bButton.DoubleClickEnabled; }
                  set { _bButton.DoubleClickEnabled = value; }
              }
      
              public System.Drawing.Image Image
              {
                  get { return _bButton.Image; }
                  set { _bButton.Image = value; }
              }
      
              public new event EventHandler Click;
              public new event EventHandler DoubleClick;
      
              private ToolStrip _tsMain;
              private ToolStripButton _bButton;
      
              public ImageButton()
              {
                  InitializeComponent();
              }
      
              private void InitializeComponent()
              {
                  var resources = new ComponentResourceManager(typeof(ImageButton));
                  _tsMain = new ToolStrip();
                  _bButton = new ToolStripButton();
                  _tsMain.SuspendLayout();
                  SuspendLayout();
      
                  // 
                  // tsMain
                  // 
                  _tsMain.BackColor = System.Drawing.Color.Transparent;
                  _tsMain.CanOverflow = false;
                  _tsMain.Dock = DockStyle.Fill;
                  _tsMain.GripMargin = new Padding(0);
                  _tsMain.GripStyle = ToolStripGripStyle.Hidden;
                  _tsMain.Items.AddRange(new ToolStripItem[] {
                  _bButton});
                  _tsMain.Location = new System.Drawing.Point(0, 0);
                  _tsMain.Name = "_tsMain";
                  _tsMain.Size = new System.Drawing.Size(25, 25);
                  _tsMain.TabIndex = 0;
                  _tsMain.Renderer = new ImageButtonToolStripSystemRenderer();
                  // 
                  // bButton
                  // 
                  _bButton.DisplayStyle = ToolStripItemDisplayStyle.Image;
                  _bButton.Image = ((System.Drawing.Image)(resources.GetObject("_bButton.Image")));
                  _bButton.ImageTransparentColor = System.Drawing.Color.Magenta;
                  _bButton.Name = "_bButton";
                  _bButton.Size = new System.Drawing.Size(23, 22);
                  _bButton.Click += bButton_Click;
                  _bButton.DoubleClick += bButton_DoubleClick;
                  // 
                  // ImageButton
                  // 
                  Controls.Add(_tsMain);
                  Name = "ImageButton";
                  Size = new System.Drawing.Size(25, 25);
                  _tsMain.ResumeLayout(false);
                  _tsMain.PerformLayout();
                  ResumeLayout(false);
                  PerformLayout();
              }
      
              void bButton_Click(object sender, EventArgs e)
              {
                  if (Click != null)
                  {
                      Click(this, e);
                  }
              }
      
              void bButton_DoubleClick(object sender, EventArgs e)
              {
                  if(DoubleClick != null)
                  {
                      DoubleClick(this, e);
                  }
              }
      
              public class ImageButtonToolStripSystemRenderer : ToolStripSystemRenderer
              {
                  protected override void OnRenderToolStripBorder(ToolStripRenderEventArgs e)
                  {
                      //base.OnRenderToolStripBorder(e);
                  }
              }
          }
      }
      

      【讨论】:

        猜你喜欢
        • 2021-03-06
        • 1970-01-01
        • 2023-03-30
        • 1970-01-01
        • 1970-01-01
        • 2013-12-08
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多