如何在GDI中绘制透明椭圆?我尝试了SetBkMode()
但仍然得到一个白色的椭圆背景。
case WM_PAINT:
{
hdc = BeginPaint(hwnd, &ps);
SetBkMode(hdc, TRANSPARENT); // doesnt work
Ellipse(hdc, 0,0,500,500);
EndPaint(hwnd, &ps);
break;
}
如何在GDI中绘制透明椭圆?我尝试了SetBkMode()
但仍然得到一个白色的椭圆背景。
case WM_PAINT:
{
hdc = BeginPaint(hwnd, &ps);
SetBkMode(hdc, TRANSPARENT); // doesnt work
Ellipse(hdc, 0,0,500,500);
EndPaint(hwnd, &ps);
break;
}
以下内容源自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;
}