2011-09-12 16 views
6

Mi chiedevo come potevo farlo. So che posso usare il componente del pulsante ma ha le piccole cose grigie intorno quando gli do un'immagine. Con il pulsante immagine come posso mostrare un'altra immagine per l'effetto hoverCome rendere il pulsante immagine

+1

Stai parlando di WinForms, WPF o ASP.NET? – Alxandr

+0

Sto parlando di WinForms – Matthewj

+0

Non sono così abile in WinForms, ma penso che puoi girare il bordo e lo sfondo su ImageButtons, e quindi, probabilmente c'è qualche evento per il mouseover o qualcosa del genere che puoi usare per cambiare il Immagine. – Alxandr

risposta

15

Si desidera creare un pulsante senza confine, ma visualizza le immagini differenti quando l'utente passa sopra con il mouse? Ecco come si può fare:

  1. Aggiungere un controllo ImageList al form a aggiungere due immagini, una per l'aspetto normale del pulsante e uno per quando il mouse passa sopra.

  2. Aggiungere il pulsante e impostare le seguenti proprietà:
    FlatStyle = piatto
    FlatAppearance.BorderColor (e forse MouseOverBackColor & MouseDownBackColor) per il colore di sfondo del modulo
    ImageList = ImageList aggiunto al modulo
    ImageIndex al valore dell'indice dell'immagine normale

Code the MouseHover e MouseL eventi di eave per il pulsante in questo modo:

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

Credo che ti darà l'effetto visivo che stai cercando.

+0

Assolutamente perfetto – motoDrizzt

+0

Math.pow (vote_up, current_up_votes * 2) –

1

È possibile assegnare la proprietà BackgroundImage per il pulsante. È inoltre possibile utilizzare gli eventi OnMouseEnter e OnMouseExit per modificare lo sfondo in base alla richiesta.

Vedi BackgroundImageOnMouseEnterOnMouseLeave

0

WinForm non ha un pulsante Image a differenza dei Web Form. L'aggiunta di un'immagine a un pulsante normale è possibile, ma in alcuni casi non sta andando bene. Potrebbe essere necessario utilizzare un controllo a pulsante di terze parti come WinForm ImageButton o creare il proprio CustomControl.

1

Piccolo riassunto (Border, MouseDownBackColor, MouseOverBackColor)

FlatApperance

BorderColor = Nero o quello che volete
BorderSize = può essere impostato su 0
MouseDownBackColor = Trasparente
MouseOverBackColor = Transparent

Text = nessuno

Per MouseDown:

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

0

Ho anche bisogno di un pulsante di immagine, ma ho voluto uno come il ToolstripMenuButton. Con i bordi e i colori corretti al passaggio del mouse. così ho fatto un controllo personalizzato a fare proprio questo:

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