Tengo una aplicación C# que muestra la hora actual en un formulario .NET transparente . El formulario no tiene controles ni bordes. Su propiedad TransparencyKey se establece en el color de fondo del formulario "gris claro" para que sea transparente.
Entonces el usuario solo puede ver el texto (hora actual).Texto antialias en un formulario .NET transparente
El texto se dibuja en el PaintEventHandler:
private void Display_Paint(object sender, PaintEventArgs e)
{
Graphics formGraphics = e.Graphics;
Font myFont = new Font("Microsoft Sans Serif", 24, FontStyle.Bold);
formGraphics.TextRenderingHint = System.Drawing.Text.TextRenderingHint.AntiAlias;
//formGraphics.TextRenderingHint = System.Drawing.Text.TextRenderingHint.SingleBitPerPixel;
formGraphics.DrawString("00:00:00", myFont, Brushes.Green, 0.0F, 0.0F);
myFont.Dispose();
}
Debido a la anti-aliasing el texto "00:00:00" se muestra deshilachado cuando la forma está sobre un fondo oscuro. Para fondos claros, el texto es o.k.
Esta imagen muestra el problema y el buen caso:
Obviamente de Windows hace que el texto sea de una manera que se ajuste al propio color de fondo del formulario y no de una manera que se ajuste al fondo que está detrás del formulario transparente.
¿Es posible dejar que Windows tome el fondo detrás de el Formulario en cuenta al procesar el texto para que obtenga deshacerse de las franjas?
Una "solución" podría ser desactivar el anti-aliasing configurando TextRenderingHint en consecuencia. Pero hasta ahora esta no es mi "solución" preferida.
Sistema:
Windows XP, SP 3, .NET 3.5, VS 2008
Gracias por la punta, pero de seleccionar el estilo no ayuda. – Habi
Me gustaría saber más sobre la parte de copia – pastapockets
En realidad, hice algunas búsquedas, parece que estaba buscando CopyFromScreen, http://stackoverflow.com/questions/715094/how-do-i-capture-the-current -screen-as-an-image – pastapockets