Прозрачный Эллипс - PullRequest
3 голосов
/ 22 мая 2011

Как вы рисуете прозрачный эллипс с 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;
}

1 Ответ

11 голосов
/ 22 мая 2011

Заимствовано из Заполните эллипс в 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;
}
...