6

Tengo una interfaz de usuario que requiere colocar algunos botones redondos en un proyecto C# con algunos datos detrás de ellos. Los botones son System.Windows.Forms.buttons y he usado una imagen GIF con transparencia para crearlos. Sin embargo, las áreas transparentes no son transparentes. He buscado referencias en línea, pero no he encontrado sugerencias sobre cómo hacerlo correctamente. Hay alguna mención de hacerlo en Visual Studio 2008 pero necesito mantener este proyecto en 2005. Cualquier ayuda o sugerencia es apreciada.¿Puedo crear botones transparentes en Visual Studio 2005 con C#

Respuesta

1

Estoy bastante seguro de que necesita usar PNG con WinForms para obtener transparencia de imagen. Sé que los he usado con éxito.

EDITAR: Cuando utilicé los PNG, los superponía con el control de Imagen en Form1.BackgroundImage; No los estaba usando en botones.

Creo que su mejor opción es cambiar de usar un control de botón a usar un control de imagen. También puede intentar cambiar el estilo del botón a plano (creo que era plano, tal vez uno de los otros estilos) y ver si puede obtener el efecto que desea de esa manera.

+0

Gracias, amdfan. Veré si puedo hacer que esto funcione. – Sean

0

Debe establecer la propiedad BackColor de un botón en "Transparente".

Button1.BackColor = System.Drawing.Color.Transparent;

0

crear una clase derivada del botón y poner este código.

protected override CreateParams CreateParams 
    { 
     get 
     { 
      const int WS_EX_TRANSPARENT = 0x20; 
      CreateParams cp = base.CreateParams; 
      cp.ExStyle |= WS_EX_TRANSPARENT; 
      return cp; 
     } 
    } 

y en el método create

 SetStyle(ControlStyles.SupportsTransparentBackColor, true); 
     SetStyle(ControlStyles.Opaque, true); 
     this.BackColor = Color.Transparent; 
0

Estoy utilizando Visual Studio 2005 y trató de seguir su ejemplo anterior, pero no funcionó (el fragmento de crear el método). Tengo un fondo para mi formulario y estoy tratando de crear botones transparentes biselados.

Actualmente, al insertar el código anterior, mi fondo es transparente y mis botones son de color blanco.

Aquí hay un fragmento de mi código

 Bitmap mainFormBackground = (Bitmap)Image.FromFile("background.jpg"); 
     this.BackgroundImage = mainFormBackground; 
     this.BackColor = Color.Black; 
     this.ForeColor = Color.White; 

Añadir algunos botones

 SetStyle(ControlStyles.SupportsTransparentBackColor, true); 
     SetStyle(ControlStyles.Opaque, true); 
     this.BackColor = Color.Transparent; 

Incluso intenté

  btnName.BackColor = Color.Transpare; 

esto también no funcionaba

1
using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 
using System.Windows.Forms; 
using System.Drawing; 

public class TransparentControl : Control 
{ 
    public TransparentControl() 
    { 
     SetStyle(ControlStyles.SupportsTransparentBackColor, true); 
     SetStyle(ControlStyles.Opaque, true); 
     SetStyle(ControlStyles.ResizeRedraw, true); 
     this.BackColor = Color.Transparent; 
    } 

    protected override void OnPaint(PaintEventArgs pevent) 
    { 
     Graphics g = pevent.Graphics; 
     g.DrawRectangle(Pens.Black, this.ClientRectangle); 
    } 


    protected override void OnPaintBackground(PaintEventArgs pevent) 
    { 
     // don't call the base class 
     //base.OnPaintBackground(pevent); 
    } 


    protected override CreateParams CreateParams 
    { 
     get 
     { 
      const int WS_EX_TRANSPARENT = 0x20; 
      CreateParams cp = base.CreateParams; 
      cp.ExStyle |= WS_EX_TRANSPARENT; 
      return cp; 
     } 
    } 

    // rest of class here... 
} 
1

Prueba esto:

 Bitmap temp = new Bitmap(button1.Image); 

     temp.MakeTransparent(Color.Black); //your transparent color, in this case black 

     button1.Image = (Image) Logo; 

     temp.Dispose(); 

     temp = null; 
1

Sólo hay que establecer FlatStyle property a "plana" y hellip del botón, y voilà! Sé que esto funciona con PNG, pero no lo he probado con GIF.

0

La siguiente respuesta se verifica en Visual Studio 2012 y funciona con el formato de imagen de fondo BMP, GIF, PNG y JPG; creado por MS Paint.

Para que su fondo visible a través de su botón:

Ir a la ventana de propiedades del botón.A continuación, cambiar el BackColor FlatStyle y como se muestra en la siguiente imagen:

The FlatStyle is to be chosen as Flat

The color is to be chosen from Web Tab

Nota: El color debe ser elegido de Web Tab y La FlatStyle es ser elegido como plana.

Pero después de esto, el botón será transparente hasta que el mouse no desplace el mouse o se seleccione o presione. En esa condición, estará en un color no transparente. Si desea que siempre sea transparente, siga las siguientes imágenes y cambie los colores correspondientes a transparente como antes. Los colores que se cambiarán son: 'MouseOverBackColor' & 'MouseDownBackColor'.

enter image description here

enter image description here

Nota: Si elige siempre transparentes, como se muestra, no habrá ningún cambio en el aspecto del botón mientras que será en la acción!

Espero que te ayude.

¡La mejor de las suertes!

Cuestiones relacionadas