使用Gdi可创建椭圆区域:
CRgn rgn;
rgn.CreateEllipticRgnIndirect(&rcRgn);
但是这种方法会有比较大的锯齿边缘,为了美观效果,我们常常引用GdiPlus来清理锯齿:
Gdiplus::GraphicsPath path; // 创建路径
path.AddEllipse(rcRgn.left, rcRgn.top, rcRgn.Width(), rcRgn.Height()); // 添加椭圆Gdiplus::Region rgn(&path); // 将椭圆初始化区域
Gdiplus::Graphics graphics(m_WaveLayer.GetSafeHwnd()); // 设置graphics的绘制窗口句柄
graphics.SetSmoothingMode(Gdiplus::SmoothingMode::SmoothingModeAntiAlias ); // {指定消除锯齿的呈现}
m_WaveLayer.SetWindowRgn(rgn.GetHRGN(&graphics), TRUE); // 设置显示区域
m_WaveLayer.UpdateWindow(); // 更新