透明椭圆

时间:2011-05-22 04:24:15

标签: c++ gdi geometry 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;
}

1 个答案:

答案 0 :(得分:11)

借鉴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;
}