GDIで透明な楕円をどのように描画しますか? 試してみSetBkMode()
ましたが、まだ白い楕円 bk が表示されます。
case WM_PAINT:
{
hdc = BeginPaint(hwnd, &ps);
SetBkMode(hdc, TRANSPARENT); // doesnt work
Ellipse(hdc, 0,0,500,500);
EndPaint(hwnd, &ps);
break;
}
GDIで透明な楕円をどのように描画しますか? 試してみSetBkMode()
ましたが、まだ白い楕円 bk が表示されます。
case WM_PAINT:
{
hdc = BeginPaint(hwnd, &ps);
SetBkMode(hdc, TRANSPARENT); // doesnt work
Ellipse(hdc, 0,0,500,500);
EndPaint(hwnd, &ps);
break;
}
楕円は、現在のペンを使用して輪郭が描かれ、現在のブラシを使用して塗りつぶされます。
そのため、透明ブラシを設定する必要があります。そのためには、GetStockObject(HOLLOW_BRUSH)
それを取得しSelectObject()
、特定のデバイス コンテキストに対してアクティブ化するために使用します。したがって、コードは次のようになります。
case WM_PAINT:
{
hdc = BeginPaint(hwnd, &ps);
SelectObject(hdc, GetStockObject(HOLLOW_BRUSH));
Ellipse(hdc, 0,0,500,500);
EndPaint(hwnd, &ps);
break;
}