在CTestView::OnDraw函数中设置映射模式,画出坐标系
时间: 2024-05-14 15:18:07 浏览: 171
vc编程中的坐标映射
在 MFC 中,可以通过设置 CDC 对象的映射模式来进行坐标系的绘制。在 CTestView::OnDraw 函数中,可以按照以下步骤进行:
1. 获取 CDC 对象:
```
CDC* pDC = GetDC();
```
2. 设置映射模式为 MM_LOENGLISH:
```
pDC->SetMapMode(MM_LOENGLISH);
```
其中,MM_LOENGLISH 表示逻辑坐标的单位为 0.01 毫米。
3. 绘制坐标轴:
```
pDC->MoveTo(0, 0);
pDC->LineTo(1000, 0);
pDC->MoveTo(0, 0);
pDC->LineTo(0, 1000);
```
这段代码用于绘制 x 轴和 y 轴。
4. 绘制坐标轴上的刻度:
```
for (int i = 1; i < 1000; i += 10) {
pDC->MoveTo(i, 0);
pDC->LineTo(i, -100);
}
for (int i = 1; i < 1000; i += 10) {
pDC->MoveTo(0, i);
pDC->LineTo(-100, i);
}
```
这段代码用于在 x 轴和 y 轴上绘制刻度,每隔 10 个单位绘制一次。
5. 释放 CDC 对象:
```
ReleaseDC(pDC);
```
完整的代码如下:
```
void CTestView::OnDraw(CDC* pDC)
{
CDocument* pDoc = GetDocument();
// TODO: add draw code here
pDC = GetDC();
// 设置映射模式为 MM_LOENGLISH
pDC->SetMapMode(MM_LOENGLISH);
// 绘制坐标轴
pDC->MoveTo(0, 0);
pDC->LineTo(1000, 0);
pDC->MoveTo(0, 0);
pDC->LineTo(0, 1000);
// 绘制刻度
for (int i = 1; i < 1000; i += 10) {
pDC->MoveTo(i, 0);
pDC->LineTo(i, -100);
}
for (int i = 1; i < 1000; i += 10) {
pDC->MoveTo(0, i);
pDC->LineTo(-100, i);
}
// 释放 CDC 对象
ReleaseDC(pDC);
}
```
阅读全文