透明椭圆

Geo*_*Shg 3 c++ geometry gdi drawellipse

你如何用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;
}
Run Code Online (Sandbox Code Playgroud)

Ale*_*nov 11

借用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;
}
Run Code Online (Sandbox Code Playgroud)