TextRenderer.DrawText
メソッドを使用して、バックカラーの単色の白(Color.White
)であったビットマップにテキストを( を使用して)レンダリングしていますFillRectangle
。次に、次のように、TransparentBlt
このビットマップをカラフルな背景画像を含むメモリ DC に、Color.White And &HFFFFFF
透明色の RGB 値 (crTransparent
引数) として使用します。
TransparentBlt(hDestMemDc, 0, 0, iTextWidth, iTextHeight, hTextMemDc, 0, 0, iTextWidth, iTextHeight, Color.White.ToArgb() And &HFFFFFF)
{ 次にBitBlt
、組み合わせた画像をコントロールのサーフェスに表示しますが、あまり関係ありません }
レンダリングされたテキストはシャープでクリアですが、TransparentBlt
結果はシャープではありません。
これは、白い背景の上にレンダリングされたテキストのスナップショットです (これは画像であり、入力されたテキストではありません)。
これは、上の画像をカラフルな背景の上にトランスブリッティングした結果です。
白い(透明になる) ポイントがまだ赤いテキストを囲んでいることに注意してください。
さらに、画像の左側に描かれた白い垂直線と、右上隅に描かれた同様の短い水平線に注目してください。
VB.NET 2005 (別名 VB8) を使用しています。アドバイスをいただければ幸いです。