メモリ上にテキストを描画してそれをフォーム上にコピーしようと思い、以下のコードを実行したのですが、フォーム上に表示されたテキストにアンチエイリアスがかかりません。
いろいろ試したところCreateCompatibleBitmap時のサイズを指定するためにGetTextExtentPoint32のSIZE構造体を使用しているのですが、それを使わないで数値を直接指定してCreateCompatibleBitmapするとなぜかアンチエイリアスがかかります。
何かご存知の方がおられればご教授願いたいと思います。
よろしくお願い致します。
hMemDC = CreateCompatibleDC(Form1.hdc)
SetBkMode hMemDC, OPAQUE
SetBkColor hMemDC, RGB(255, 0, 0)
SetTextColor hMemDC, RGB(255, 255, 0)
hFont = CreateFont(48, 0, 0, 0, _
FW_NORMAL, 0, 0, 0, _
DEFAULT_CHARSET, _
OUT_DEFAULT_PRECIS, _
CLIP_DEFAULT_PRECIS, _
ANTIALIASED_QUALITY, _
DEFAULT_PITCH Or FF_DONTCARE, _
"MS Pゴシック")
SelectObject hMemDC, hFont
GetTextExtentPoint32 hMemDC, txt, LenB(txt), udtSIZE
hBitmap = CreateCompatibleBitmap(Form1.hdc, udtSIZE.cz, udtSIZE.cy)
SelectObject hMemDC, hBitmap
TextOut hMemDC, 0, 0, txt, LenB(StrConv(txt, vbFromUnicode))
BitBlt Form1.hdc, 0, 0, udtSIZE.cx, udtSIZE.cy, hMemDC, 0, 0, SRCCOPY
ツイート | ![]() |