mfc 多边形每条边绘制垂直方向的线段
时间: 2023-10-06 15:06:05 浏览: 108
利用MFC进行多边形的绘制
3星 · 编辑精心推荐
如果你想在MFC中绘制一个多边形,并在每条边上绘制垂直于该边的线段,你可以按照以下步骤进行:
1. 定义一个多边形的顶点数组。
2. 使用MFC的绘图函数(如CDC::MoveTo和CDC::LineTo)在屏幕上绘制多边形。
3. 对于每条边,计算其垂线的起点和终点坐标。
4. 使用相应的绘图函数(如CDC::MoveTo和CDC::LineTo)在屏幕上绘制垂线。
下面是一个代码示例,用于在MFC中绘制一个四边形,并在每条边上绘制垂线:
```c++
void CMyView::OnDraw(CDC* pDC)
{
// 定义多边形的顶点数组
POINT points[4] = { {100, 100}, {200, 150}, {150, 250}, {50, 200} };
// 绘制多边形
pDC->Polygon(points, 4);
// 绘制每条边的垂线
for (int i = 0; i < 4; i++)
{
// 计算垂线的起点和终点坐标
POINT start = points[i];
POINT end = points[(i + 1) % 4];
if (start.y > end.y)
std::swap(start, end);
double k = (double)(start.x - end.x) / (double)(end.y - start.y);
int x = (int)(start.x + k * (p - start.y));
POINT p1 = { x, start.y };
POINT p2 = { x, end.y };
// 绘制垂线
pDC->MoveTo(p1);
pDC->LineTo(p2);
}
}
```
在上面的代码中,我们首先定义了一个四边形的顶点数组,并使用CDC::Polygon函数在屏幕上绘制了这个四边形。然后,我们使用一个for循环来遍历每条边,计算垂线的起点和终点坐标,并使用CDC::MoveTo和CDC::LineTo函数在屏幕上绘制垂线。注意,在计算垂线的起点和终点坐标时,我们需要考虑起点和终点的y坐标大小关系。最后,我们得到了一个在MFC中绘制多边形并在每条边上绘制垂线的效果。
阅读全文