Domanda

Quando disegno una stringa in un buffer, il risultato finale non è anti-alias il modo in cui mi aspetto. Questo codice illustra il problema ... basta mettere questo in Form1.cs di un progetto standard dispositivo intelligente:

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);
}

D'altra parte, se mi limito a disegnare la stringa in oggetto Graphics che è stato passato con l'PaintEventArgs, rende in ClearType proprio come mi aspetto.

Immagino che ho avuto modo di creare il mio buffer di grafica in un modo che rende esso uso arrotondamento dei font, ma non vedo un modo per farlo.

È stato utile?

Soluzione

Si scopre di essere stato un problema semplice. Rimuovendo il PixelFormat.Format32bppRgb ha funzionato bene. Sembra che è necessario assicurarsi che i buffer hanno gli stessi formati di pixel ...

Altri suggerimenti

Impostare la proprietà SmoothingMode della grafica oggetto:

g.SmoothingMode = SmoothingMode.AntiAlias;

Si dovrà utilizzare gdiplus.dll (esiste qualche wrapper per questo), ma è disponibile solo su Windows Mobile 6 Professional (non standard).

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top