Transparent Ellipse
Asked Answered
S

1

5

How do you draw a transparent ellipse with GDI? I tried SetBkMode() but I still get a white ellipse bk.

case WM_PAINT:
{
    hdc = BeginPaint(hwnd, &ps);
    SetBkMode(hdc, TRANSPARENT); // doesnt work
    Ellipse(hdc, 0,0,500,500);
    EndPaint(hwnd, &ps);
    break;
}
Stipendiary answered 22/5, 2011 at 4:24 Comment(0)
H
16

Borrowed from Fill an ellipse in C++:

The ellipse is outlined by using the current pen and is filled by using the current brush.

Therefore, you need to set a transparent brush. For that, use GetStockObject(HOLLOW_BRUSH) to obtain it and SelectObject() to activate it for a given device context. So your code can be like this:

case WM_PAINT:
{
    hdc = BeginPaint(hwnd, &ps);
    SelectObject(hdc, GetStockObject(HOLLOW_BRUSH));
    Ellipse(hdc, 0,0,500,500);
    EndPaint(hwnd, &ps);
    break;
}
Hafler answered 22/5, 2011 at 5:50 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.