如何制作图像按钮

我想知道我怎么能这样做。 我知道我可以使用按钮组件,但当我给它一个图像时它周围有一些灰色的东西。 使用图像按钮,我如何显示hover效果的另一个图像

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

  1. 将ImageList控件添加到表单中,添加两个图像,一个用于按钮的正常外观,另一个用于鼠标hover时的图像。

  2. 添加按钮并设置以下属性:
    FlatStyle =平
    FlatAppearance.BorderColor (也许MouseOverBackColorMouseDownBackColor )到你的表单的背景颜色
    ImageList =您添加到表单的ImageList
    ImageIndex为普通图像的索引值

为按钮编写MouseHover和MouseLeave事件代码如下:

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

我相信这会给你你正在寻找的视觉效果。

小摘要 (Border,MouseDownBackColor,MouseOverBackColor)

FlatApperance

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

Text =无

对于MouseDown

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

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

请参见BackgroundImage OnMouseEnter OnMouseLeave

与Web窗体不同,WinForm没有ImageButton。 可以将图像添加到普通按钮,但在某些情况下看起来不太好。 您可能必须使用WinForm ImageButton等第三方按钮控件或创建自己的CustomControl。

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

 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); } } } }