4

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;
}
4

1 に答える 1

14

Fill an ellipse in C++から借用:

楕円は、現在のペンを使用して輪郭が描かれ、現在のブラシを使用して塗りつぶされます。

そのため、透明ブラシを設定する必要があります。そのためには、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;
}
于 2011-05-22T05:50:30.453 に答える