図形を描画する際に背景を透過するためには SetBkMode() 関数を使います。
通常、 GDI 関数を使って図形を描画する際には、描画に先だって描画範囲が背景色で塗りつぶされます。一番わかりやすいのはテキストを描画する TextOut() 関数だと思います。しかしながら、時として、特にゲームの場合は背景を透過して欲しい場合があります。これを実現するためには SetBkMode() 関数に TRANSPARENT と設定します。
// デバイスコンテキストを取得 HDC hdc = GetDC(NULL); // デバイスコンテキストの背景描画モードを TRANSPARENT に変更 SetBkMode(hdc, TRANSPARENT); // 描画(背景が透過されている) TextOut(hdc, 10, 10, TEXT("てすてぃー"), lstrlen(TEXT("てすてぃー"))); // 後始末 ReleaseDC(NULL, hdc);
なお、背景色が欲しい場合は SetBkMode() 関数に OPAQUE を指定するのですが、このとき背景色を指定するための関数は SetBkColor() になります。
SetBkMode(hdc, OPAQUE); SetBkColor(hdc, RGB(255, 0, 0));
この関数は意外なところに応用が利くのですが、それはまた後ほど。
Contributions