Hacer un Control que sea transparente
Problema
Una pregunta bastante común en los foros es tener dentro de un formulario un Panel o PictureBox, y que sea trasparente a la imagen de fondo establecida en el formulario.
Dentro de los colores de Fondo que podemos establecer dentro de uno de estos controles existe “Transparent”. Pero este color no es la solución, porque no va a coger el valor de la imagen, sino que va a coger el color de fondo del formulario.
Posible Solución, que no es la mejor.
Recogeremos la imagen de fondo, y capturaremos los pixeles para establecerlos al contenedor que queremos hacer transparente.
1: void HacerTransparente(Bitmap original,Control control)
2: {
3:
4: Bitmap copiaPanel = new Bitmap(panel1.Width, panel1.Height);
5: for (int x = 0; x < panel1.Width; x++)
6: {
7: for (int y = 0; y < panel1.Height; y++)
8: {
9: copiaPanel.SetPixel(x, y, original.GetPixel(x + panel1.Location.X, y + panel1.Location.Y));
10: }
11: }
12: control.BackgroundImage = copiaPanel;
13: }
Espero que os resulte de utilidad.
Saludos!