2011-05-22 126 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; 
}