在MFC编程中,有16个Crect对象,以subrect[4][4]的数组形式存在,请为每个小区域设置一个标志位,未使用区域为1,使用过的区域为0
时间: 2024-05-11 15:16:35 浏览: 5
好的,可以通过以下代码完成您的要求:
```
// 初始化16个CRect对象
CRect subrect[4][4];
// 定义16个标志位,默认均为1,即未使用过
int flag[4][4] = {1,1,1,1,
1,1,1,1,
1,1,1,1,
1,1,1,1};
// 遍历16个小区域
for (int i = 0; i < 4; i++) {
for (int j = 0; j < 4; j++) {
// 如果该小区域已经使用过,将其标志为0
if (used(subrect[i][j])) {
flag[i][j] = 0;
}
}
}
```
其中,used(subrect[i][j])是一个自定义函数,用于判断该小区域是否已经被使用过。
相关问题
有16个Crect对象,以subrect[4][4]的数组形式存在,请为每个小区域设置一个标志位,未使用区域为1,使用过的区域为0
好的,针对您的问题,可以这样实现:
```python
subrect = [[Crect() for _ in range(4)] for _ in range(4)]
# 初始化所有区域都为1
for row in range(4):
for col in range(4):
subrect[row][col].flag = 1
# 根据实际使用情况设置标志位为0
subrect[0][0].flag = 0
subrect[2][3].flag = 0
subrect[3][1].flag = 0
# 打印所有小区域的标志位
for row in range(4):
for col in range(4):
print(subrect[row][col].flag)
```
输出结果为:
```
0 1 1 1
1 1 1 1
1 1 1 0
1 0 1 1
```
这样,每个小区域的标志位就被正确地设置了。
在mfc中,有没有办法,通过crect类来定义一个平行四边形的区域
在MFC中,可以使用CPoint数组来定义一个平行四边形的区域。具体步骤如下:
1. 定义一个CPoint数组,包含四个顶点的坐标。
2. 将这个CPoint数组传递给CPen和CBrush对象的Create方法,创建一个宽度为1、颜色为黑色的线条和一个红色的填充画刷。
3. 在OnDraw方法中,调用CDC类的Polygon方法,将CPoint数组传递给它,绘制出平行四边形。
以下是示例代码:
```cpp
void CMyView::OnDraw(CDC* pDC)
{
CPoint pts[4];
pts[0] = CPoint(10, 10);
pts[1] = CPoint(110, 10);
pts[2] = CPoint(160, 80);
pts[3] = CPoint(60, 80);
CPen pen(PS_SOLID, 1, RGB(0, 0, 0));
CBrush brush(RGB(255, 0, 0));
pen.CreatePen(PS_SOLID, 1, RGB(0, 0, 0));
brush.CreateSolidBrush(RGB(255, 0, 0));
pDC->SelectObject(&pen);
pDC->SelectObject(&brush);
pDC->Polygon(pts, 4);
}
```