GDI描画– category –
-
GDI描画
【MFC】BitBltで画面やウィンドウをキャプチャする:見えない枠・CAPTUREBLT・PrintWindow・DPIのずれ
MFCで画面やウィンドウをキャプチャするときは、画面のDCからメモリDCに選択したビットマップへBitBltで写します。ただ、GetWindowRectで取った範囲をそのまま写すと、ウィンドウの左右と下に後ろの背景が写り込むことがあります。重なっている別のウィン... -
GDI描画
【MFC】AlphaBlendで半透明に重ねて描く:乗算済みアルファとAC_SRC_ALPHA・SourceConstantAlphaの使い分け
MFCで画像を半透明に重ねるときは、CDC::AlphaBlendを使います。画像全体を同じ濃さで薄くするならBLENDFUNCTIONのSourceConstantAlphaだけで足りますが、丸い形だけを重ねたり縁をぼかしたりするには、画素ごとのアルファを持った32ビットのビットマップ... -
GDI描画
【MFC】TransparentBltで背景色を抜いて描く:透過色の指定と、縮小した画像の縁に色が残る所
背景をマゼンタで塗ったアイコンのビットマップをBitBltで重ねると、マゼンタの四角までそのまま描かれます。TransparentBltを使うと、透過色に指定した色の画素は転送されないので、アイコンの形だけが下の絵の上に描かれます。MFCではCDC::TransparentBl... -
GDI描画
【MFC】OnPaintのちらつき:背景消去とダブルバッファを切り分ける
MFCのアプリで、アニメーションや頻繁な再描画のある画面に、ちらつきが出ることがあります。OnPaintで描いているなら、OnEraseBkgndでTRUEを返す対策をよく見かけますね。 たしかに効きます。ただ、効くのは原因の片方だけで、代わりに前のフレームが画面... -
GDI描画
【MFC】GDI ハンドル上限:CreatePen が NULL を返し始めた瞬間の数を実機で数える
長く動かしているMFCアプリで、線や枠が急に描かれなくなることがあります。GDIオブジェクトを解放しないまま作り続けるとプロセスあたりのハンドル数が上限に達し、そこから先のCreatePenは例外もエラーダイアログも出さずにNULLを返します。 最初に見る... -
GDI描画
【MFC】BitBlt vs StretchBlt: 画像転送の基本と拡大縮小
Visual Studio 2026 検証済み。BitBlt と StretchBlt の使い分け、縮小時の BLACKONWHITE と HALFTONE の画質差、SetBrushOrgEx を含む実装手順を 3 枚の比較画像付きで解説します。 -
GDI描画
【MFC】CPaintDC vs CClientDC vs CWindowDC
Visual Studio 2026 検証済み。DCクラス(CPaintDC, CClientDC, CWindowDC)の使い分け。OnPaint内でのCPaintDC必須理由と、それぞれの描画領域の違い。
1