【问题标题】:Transparent Ellipse透明椭圆
【发布时间】:2011-08-30 11:18:50
【问题描述】:

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

【问题讨论】:

    标签: c++ gdi geometry drawellipse


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 2019-12-24
      • 1970-01-01
      • 2011-06-22
      • 1970-01-01
      • 2015-04-18
      • 1970-01-01
      • 2020-05-05
      • 2020-10-08
      • 1970-01-01
      相关资源
      最近更新 更多