visual transparentes transparente studio quitarle poner hacer fondo control con como colores admite c# winforms background transparent

c# - transparentes - label sin fondo visual basic



Fondo transparente en winforms? (9)

Quería hacer que mi ventana fuera transparente, así que eliminé los bordes, los controles y todo dejando solo el cuadro de formularios, luego intenté transparentes para BackColor y TransparencyKey, pero no funcionó ya que BackColor no aceptaría colores transparentes. Después de buscar, encontré esto en msdn:

SetStyle(ControlStyles.UserPaint, true); SetStyle(ControlStyles.OptimizedDoubleBuffer, true); SetStyle(ControlStyles.SupportsTransparentBackColor, true); this.BackColor = Color.Transparent; this.TransparencyKey = BackColor;

Infelizmente tampoco funcionó. Todavía obtengo el fondo gris o cualquier otro color seleccionado.

Todo lo que quería hacer era hacer que las ventanas fueran transparentes para poder usar una imagen de fondo que actuara como si fuera mi formulario de Windows.

Busqué por aquí y vi muchos temas con respecto a la opacidad que no es lo que estoy buscando y también vi algunos en relación con este método que estaba intentando pero que aún no he encontrado una respuesta.

Espero que alguien pueda iluminar mi camino.

ACTUALIZAR:

imagen eliminada cuando se resuelve el problema


¿Debe tener algo que ver con la "opacidad" de la forma / su fondo? ¿Has probado opacity = 0

También vea si este artículo de CP ayuda:


Aquí estaba mi solución:

En los constructores agrega estas dos líneas:

this.BackColor = Color.LimeGreen; this.TransparencyKey = Color.LimeGreen;

En su forma, agregue este método:

protected override void OnPaintBackground(PaintEventArgs e) { e.Graphics.FillRectangle(Brushes.LimeGreen, e.ClipRectangle); }

Tenga cuidado, no solo esta forma es completamente transparente dentro del marco, sino que también puede hacer clic a través de ella. Sin embargo, podría ser genial dibujar una imagen en ella y hacer que la forma se pueda arrastrar a todas partes para crear una forma personalizada.


Dibujé una pantalla de inicio (32bpp BGRA) con color de fondo "transparente" en VS2013 y puse un cuadro de imagen en un formulario para mostrar. Para mí, una combinación de respuestas anteriores funcionó:

public Form1() { InitializeComponent(); SetStyle(ControlStyles.SupportsTransparentBackColor, true); this.BackColor = this.pictureBox1.BackColor; this.TransparencyKey = this.pictureBox1.BackColor; }

Así que asegúrese de utilizar el mismo BackColor en todas partes y establecer ese color como TransparencyKey.


He intentado las soluciones anteriores (y también) muchas otras soluciones de otras publicaciones.

En mi caso, lo hice con la siguiente configuración:

public partial class WaitingDialog : Form { public WaitingDialog() { InitializeComponent(); SetStyle(ControlStyles.SupportsTransparentBackColor, true); this.BackColor = Color.Transparent; // Other stuff } protected override void OnPaintBackground(PaintEventArgs e) { /* Ignore */ } }

Como puede ver, esta es una mezcla de respuestas dadas previamente.


Intenté casi todo esto. pero aun así no pudo funcionar. Finalmente encontré que era debido a problemas de 24 bits. Si probaste un mapa de bits de menos de 24 bits. La mayoría de los métodos anteriores deberían funcionar.


La manera que he usado antes es usar un color salvaje (un color que nadie en su sano juicio usaría) para BackColor y luego establecer la clave de transparencia para eso.

this.BackColor = Color.LimeGreen; this.TransparencyKey = Color.LimeGreen;


Lo que funciona para mí es usar un color específico en lugar de la capacidad real de .png para representar la transparencia.

Entonces, lo que puedes hacer es tomar tu imagen de fondo y pintar el área transparente con un color específico (Magenta siempre me pareció apropiado ...).

Establezca la imagen como propiedad BackgrounImage del Formulario y establezca el color como TransparencyKey del Formulario. No hay necesidad de cambios en el estilo del Control, y no hay necesidad de BackColor.

Lo probé en este momento y funcionó para mí ...


Mi solución fue extremadamente cercana a la de Joel (no Etherton, simplemente Joel):

public partial class WaitingDialog : Form { public WaitingDialog() { InitializeComponent(); SetStyle(ControlStyles.SupportsTransparentBackColor, true); this.BackColor = Color.Transparent; this.TransparencyKey = Color.Transparent; // I had to add this to get it to work. // Other stuff } protected override void OnPaintBackground(PaintEventArgs e) { /* Ignore */ } }


Una solución simple para obtener un fondo transparente en un formulario de Windows es sobrescribir el método OnPaintBackground esta manera:

protected override void OnPaintBackground(PaintEventArgs e) { //empty implementation }

(Observe que la base.OnpaintBackground(e) se elimina de la función)