Pregunta

Estoy a punto de perder la razón aquí.
¿Por qué no la mezcla de control de casilla de verificación con lo que hay detrás de esto?
La pregunta se aplica a todos los controles de Windows Forms, pero estoy usando esto como un ejemplo.

Una imagen vale más que mil palabras:

text alt

Y unas pocas palabras más:
¿Qué hay detrás de la CheckBox se PictureBoxes y un Button coloreado.
CheckBox del BackColor se establece en Transparent. Pero por alguna razón decide que eso significa que debe compartir el BackColor del Form que contiene (es que su idea de la ilusión de la transparencia?).

No es esto posible en WinForms? Juraría que hice esto antes.

ACTUALIZACIÓN:
Acabo de intentar esto:
En ese formulario, establezca CheckBox del BackColor a Transparent, a continuación, cambiar el BackColor del Form que contiene a algún otro color, y la CheckBox coincidirá que BackColor. Lo que el .......?

¿Fue útil?

Solución

Bob Powell ha escrito un excelente artículo sobre los controles transparentes. Compruébelo usted mismo:

http://www.bobpowell.net/transcontrols.htm

Otros consejos

Este es un efecto secundario de los controles que son las ventanas de Windows. Una ventana es responsable de la elaboración en sí, los métodos y OnPaintBackground OnPaint hacerse cargo de eso.

Este modelo de representación no soporta bien la transparencia. Hay soporte para una verdadera transparencia mediante el uso de ventanas superpuestas. Eso es implementado por el adaptador de vídeo, Windows lo utiliza función de superposición de hardware. Pero eso sólo funciona para las ventanas de nivel superior, no ventanas secundarias. Tenga en cuenta las propiedades Form.Opacity y Form.TransparencyKey.

Hay un apoyo parcial a la transparencia a través de un truco. Un control puede fingir preguntando a la ventana padre a dibujarse a sí mismo primero dentro de la ventana de control. Que produce los píxeles de fondo, entonces se puede sacar por encima de eso. Al establecer la propiedad BackColor en Color.Transparent permite a este truco para los controles que apoyan esto. Todo el ButtonBase clases derivadas hacen. Pero no controles que son contenedores para controles nativos de Windows.

"Pedir a la ventana padre" es donde la falla en este truco se hace visible en la captura de pantalla. Usted está viendo el formulario píxeles. efectos de apilamiento no funcionan, nunca se considera que cualquier ventana de intermediario en el orden Z, sólo el padre. Esto se puede arreglar, pero muy feo, hay un artículo de KB que muestran el código.

También es notable que WPF no tiene esta restricción. Los controles no son ventanas, que prestan a sí mismos por la pintura en la parte superior de la matriz. Capas de pintura. La transparencia es ahora trivial, simplemente no pintar.

¿Se puede establecer el color de fondo de la casilla de verificación de forma manual para el color que desee? (El valor en el cuadro de imagen detrás de él)

'transparente' puede significar algo diferente de lo que se quiere MS.

Además, pruebe a cambiar la zorder de los PictureBoxes (trae al frente) y ver si eso cambia el color de fondo de la casilla de verificación.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top