透明なビットマップにアンチエイリアス処理されたテキストを描画し、アンチエイリアス処理をアルファ ブレンド ピクセルとして描画したいと考えています。このようにして、ビットマップを任意のカラー サーフェス (またはイメージ) に描画できますが、アンチエイリアシングは問題なく表示されます。
問題を示す簡単なサンプルを次に示します。
protected override void OnPaint(PaintEventArgs e)
{
base.OnPaint(e);
Bitmap bitmap = new Bitmap(this.Width, this.Height);
Graphics g = Graphics.FromImage(bitmap);
g.Clear(Color.Empty);
g.DrawString("hello world", new Font(this.Font.FontFamily, 24), Brushes.Blue, new Point(50, 50));
e.Graphics.DrawImage(bitmap, new Point(0, 0));
}
結果は次のとおりです。
これの最終的な目標は、UpdateLayeredWindow を使用して透明なアルファ ブレンド ウィンドウを描画することです。私は Conky のようなアプリケーションを作成しており、テキストに ClearType レンダリングを使用できるようにしたいと考えています (もちろん、これはアンチエイリアスなしで簡単です)。
現在、フォームの背後にある画面をつかみ、それを描画してから、テキストを描画します。見た目は良いですが、更新する必要があり、描画が遅いです。デスクトップ上でテキストを描画するための他のアイデアも歓迎します。