2009-07-27 9 views
2

Wenn ich eine Zeichenfolge in einen Puffer zeichne, wird die resultierende Ausgabe nicht wie erwartet anti-aliased. Dieser Code zeigt das Problem ... das ist nur intelligente Geräte Projekts Form1.cs in einem Standard setzen:Wie verwende ich ClearType mit Doppelpufferung auf Compact Framework?

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

Auf der anderen Seite, wenn ich die Zeichenfolge nur ziehen in das Graphics-Objekt, dass mit dem PaintEventArgs übergeben Es wird in ClearType genau so wiedergegeben, wie ich es erwarten würde.

Ich denke, ich muss meinen Grafik-Puffer in einer Weise erstellen, die es Schriftart Glättung verwendet, aber ich sehe keinen Weg, dies zu tun.

Antwort

3

Stellt sich heraus, ein einfaches Problem gewesen zu sein. Durch Entfernen der PixelFormat.Format32bppRgb funktionierte es gut. Sieht so aus, als müssten Sie sicherstellen, dass Ihre Puffer die gleichen Pixelformate haben ...

0

Stellen Sie den Smoothing Eigenschaft Ihres Graphics-Objekt:

g.SmoothingMode = SmoothingMode.AntiAlias; 
+1

Ich bezweifle, dass dies auf CF verfügbar ist. – leppie

+0

Sie haben Recht - es ist nicht da. – MusiGenesis

0

Sie gdiplus.dll verwenden (da einige Wrapper für diese vorhanden ist), aber es ist nur auf Windows Mobile 6 Professional (nicht Standard).