Pregunta

Cuando dibujo una cadena en un buffer, los productos resultantes no es anti-alias de la manera que cabe esperar. Este código ilustra el problema ... sólo hay que poner esto en Form1.cs de un proyecto de dispositivos inteligentes estándar:

protected override void OnPaint(PaintEventArgs e)
{
  Bitmap buffer = new Bitmap(Width, Height, PixelFormat.Format32bppRgb);
  using(Graphics g = Graphics.FromImage(buffer))
  {
    g.Clear(Color.White);
    g.DrawString("Hello, World", Font, new SolidBrush(Color.Black), 5, 5);
  }
  e.Graphics.DrawImage(buffer, 0, 0);
}

Por otro lado, si acabo de señalar a la cadena en un objeto de gráficos que fue aprobada en la PaintEventArgs, que hace que en ClearType al igual que yo esperaría.

Calculo que tengo que crear mi memoria intermedia de gráficos de una manera que hace que sea utilizar el suavizado de fuentes, pero no veo una manera de hacerlo.

¿Fue útil?

Solución

resulta haber sido un problema sencillo. Al eliminar la PixelFormat.Format32bppRgb funcionó bien. Parece que necesita para asegurarse de que sus memorias intermedias tienen los mismos formatos de píxeles ...

Otros consejos

Establecer la propiedad de sus SmoothingMode objeto Graphics:

g.SmoothingMode = SmoothingMode.AntiAlias;

Usted tiene que usar gdiplus.dll (existe un par de envolturas para esto), pero sólo está disponible en Windows Mobile 6 Professional (no estándar).

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