Si uso TextRenderer.DrawText() utilizando el objeto Graphics proporcionado en OnPaintBackground, mi texto se ve perfecto. Si creo mi propio mapa de bits y uso el objeto Graphics obtenido de mi mapa de bits mi texto se ve terrible. Parece que está suavizando el texto con negro, no el color de fondo del mapa de bits. Puedo evitar este problema si uso Graphics.DrawString(), pero este método tiene problemas de kerning horribles. ¿Que debería hacer? ¿Cómo puedo obtener TextRenderer.DrawText() para anti-alias correctamente utilizando los contenidos de Bitmap?TextRenderer.DrawText en mapa de bits vs OnPaintBackground
ve terrible:
Bitmap bmp = new Bitmap(100, 100, PixelFormat.Format32bppArgb);
using (Graphics g = Graphics.FromImage(bmp))
{
g.Clear(Color.Red);
TextFormatFlags tf = TextFormatFlags.Left;
TextRenderer.DrawText(g, @"C:\Development\Testing\blag", font, clip, Color.White, Color.Transparent, tf);
}
Se ve bien, pero quiero hacer esto en un mapa de bits, NO sobre la superficie del control:
protected override void OnPaintBackground(PaintEventArgs e)
{
e.Graphics.Clear(Color.Red);
TextFormatFlags tf = TextFormatFlags.Left;
TextRenderer.DrawText(e.Graphics, @"C:\Development\Testing\blag", font, clip, Color.White, Color.Transparent, tf);
}
¿Cuál es la diferencia?
'TextRenderer faster' ?? ¿Estás seguro? Este artículo dice que es más lento que GDI +: http://theartofdev.com/2014/04/21/text-rendering-methods-comparison-or-gdi-vs-gdi-revised/ – qakmak
@qakmak Fue [hace 9 años ] (http://blogs.msdn.com/b/cjacks/archive/2006/05/19/602021.aspx) pero supongo que puede haber cambiado. El código del artículo al que se vincula muestra 'DrawString' para que sea mucho más rápido en mi máquina también. –