2011-05-22 127 views
3

如何用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; 
} 

回答

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