在mfc中,如何设置平行四边形的CRgn类
时间: 2023-05-26 14:02:32 浏览: 81
在MFC中,可以使用CRgn类来创建一个平行四边形的区域,具体步骤如下:
1. 创建一个CRgn对象,可以使用默认构造函数或CreateRectRgn()函数。
2. 调用CRgn对象的CreatePolygonRgn()函数,传入一个由四个点坐标组成的POINT数组,并指定该数组中点的个数为4。注意,这四个点必须是按顺序连接成一个平行四边形的。
3. 使用该CRgn对象进行相关的操作,例如显示、裁剪等。
下面是一个示例代码,用于创建一个由四个点组成的平行四边形,其左下角坐标为(20, 80),长度为100,高度为50,倾斜角为30度:
```cpp
CPoint pts[4];
pts[0].SetPoint(20, 80);
pts[1].SetPoint(120, 80);
pts[2].SetPoint(170, 130);
pts[3].SetPoint(70, 130);
CRgn rgn;
rgn.CreatePolygonRgn(pts, 4, ALTERNATE);
// 使用rgn进行相关操作
```
其中,ALTERNATE指定了填充规则为“奇偶填充规则”,表示在区域内的奇数个像素将被填充。如果想要使用“非零填充规则”,可以将ALTERNATE替换为WINDING。
相关问题
MFC中invalidate函数
在MFC中,`Invalidate`函数用于将指定的客户区域标记为无效,并请求Windows重新绘制该区域。当应用程序需要更新窗口的显示内容时,可以调用该函数。具体来说,`Invalidate`函数会向Windows发送一个`WM_PAINT`消息,Windows在收到该消息后会调用窗口的绘制函数进行重绘。
`Invalidate`函数有多种重载形式,常用的形式如下:
```cpp
void Invalidate(BOOL bErase = TRUE);
void InvalidateRect(LPCRECT lpRect, BOOL bErase = TRUE);
void InvalidateRgn(CRgn* pRgn, BOOL bErase = TRUE);
```
其中,`Invalidate`函数默认会标记整个客户区域为无效,并请求进行擦除操作。如果`bErase`参数为`FALSE`,则不进行擦除操作。`InvalidateRect`函数可以指定一个矩形区域进行无效标记,`InvalidateRgn`函数可以指定一个区域对象进行无效标记。在调用这些函数后,Windows会在适当的时候调用窗口的绘制函数进行重绘。
MFC中有哪些绘制绘制椭圆的方法
在MFC中,可以使用以下方法来绘制椭圆:
1. CDC::Ellipse:使用设备上下文绘制一个矩形内的椭圆。
2. CBrush::CreateEllipticRgn:创建一个椭圆形的区域画刷。
3. CBrush::CreateEllipticRgnIndirect:创建一个椭圆形的区域画刷,可以指定椭圆的位置和大小。
4. CBrush::CreateEllipticRgnWithHeading:创建一个带有梯度的椭圆形画刷。
5. CRgn::CreateEllipticRgn:创建一个椭圆形的区域。
注意:以上方法中,CDC::Ellipse 是最常用的方法,可以使用设备上下文在指定的矩形区域内绘制一个椭圆形。而其他方法则是创建椭圆形的区域画刷或区域,用于填充或裁剪指定区域的图形。
相关推荐
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)