MFC中使用Ellipse怎么画透明的椭圆
时间: 2024-03-12 07:45:59 浏览: 100
MFC绘图,在菜单栏新加了绘图一个子菜单,点击椭圆画椭圆,点击正方形画正方形
5星 · 资源好评率100%
在MFC中,可以通过设置透明度的方式来绘制透明的椭圆。具体步骤如下:
1. 创建一个 CPen 对象,设置其颜色和宽度,例如:
```cpp
CPen pen(PS_SOLID, 1, RGB(0, 0, 0)); // 设置黑色宽度为1的笔
```
2. 创建一个 CBrush 对象,设置其颜色和透明度,例如:
```cpp
LOGBRUSH lb;
lb.lbStyle = BS_NULL; // 设置样式为透明
CBrush brush;
brush.CreateBrushIndirect(&lb); // 创建透明画刷
brush.SetColor(COLORREF(RGB(255, 0, 0))); // 设置画刷颜色为红色
brush.SetOpacity(128); // 设置画刷透明度为128
```
3. 选择笔和画刷,设置透明度混合模式,例如:
```cpp
pDC->SelectObject(&pen);
pDC->SelectObject(&brush);
pDC->SetBkMode(TRANSPARENT); // 设置背景透明
pDC->SetROP2(R2_XORPEN); // 设置混合模式
```
4. 使用 Ellipse 函数绘制椭圆,例如:
```cpp
pDC->Ellipse(100, 100, 200, 200); // 绘制一个矩形为 (100, 100, 200, 200) 的椭圆
```
完整的代码示例如下:
```cpp
void CMyView::OnDraw(CDC* pDC)
{
CPen pen(PS_SOLID, 1, RGB(0, 0, 0)); // 设置黑色宽度为1的笔
LOGBRUSH lb;
lb.lbStyle = BS_NULL; // 设置样式为透明
CBrush brush;
brush.CreateBrushIndirect(&lb); // 创建透明画刷
brush.SetColor(COLORREF(RGB(255, 0, 0))); // 设置画刷颜色为红色
brush.SetOpacity(128); // 设置画刷透明度为128
pDC->SelectObject(&pen);
pDC->SelectObject(&brush);
pDC->SetBkMode(TRANSPARENT); // 设置背景透明
pDC->SetROP2(R2_XORPEN); // 设置混合模式
pDC->Ellipse(100, 100, 200, 200); // 绘制一个矩形为 (100, 100, 200, 200) 的椭圆
}
```
阅读全文