2

文字列をバッファに描画すると、結果の出力は期待どおりにアンチエイリアス処理されません。このコードは問題を示しています...これを標準のスマートデバイスプロジェクトのForm1.csに入れるだけです。

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

一方、で渡されたGraphicsオブジェクトに文字列を描画するPaintEventArgsだけでは、期待どおりにClearTypeでレンダリングされます。

フォントスムージングを使用する方法でグラフィックバッファを作成する必要があると思いますが、それを行う方法がわかりません。

4

3 に答える 3

3

単純な問題であることがわかりました。を外すPixelFormat.Format32bppRgbとうまくいきました。バッファのピクセル形式が同じであることを確認する必要があるようです...

于 2009-07-27T21:51:37.033 に答える
0

gdiplus.dllを使用する必要があります(これにはいくつかのラッパーがあります)が、Windows Mobile 6 Professionalでのみ使用できます(標準ではありません)。

于 2009-07-27T12:44:13.757 に答える
0

Graphics オブジェクトの SmoothingMode プロパティを設定します。

g.SmoothingMode = SmoothingMode.AntiAlias;
于 2009-07-27T12:42:17.893 に答える