MFC 在绘制的矩形每条边的中心绘制一个箭头 c++
时间: 2024-04-07 09:32:04 浏览: 64
好的,在 MFC 中绘制矩形每条边的中心绘制一个箭头的示例代码如下:
```c++
void CMyView::OnDraw(CDC* pDC)
{
// 创建一个矩形
CRect rect(100, 100, 200, 200);
// 计算矩形中心点坐标
CPoint center = rect.CenterPoint();
// 计算箭头的长度和宽度
int arrowLength = 10;
int arrowWidth = 5;
// 计算箭头的起点和终点坐标
CPoint leftArrowStart(center.x - rect.Width() / 2, center.y);
CPoint leftArrowEnd(leftArrowStart.x + arrowLength, leftArrowStart.y);
CPoint rightArrowStart(center.x + rect.Width() / 2, center.y);
CPoint rightArrowEnd(rightArrowStart.x - arrowLength, rightArrowStart.y);
CPoint topArrowStart(center.x, center.y - rect.Height() / 2);
CPoint topArrowEnd(topArrowStart.x, topArrowStart.y + arrowLength);
CPoint bottomArrowStart(center.x, center.y + rect.Height() / 2);
CPoint bottomArrowEnd(bottomArrowStart.x, bottomArrowStart.y - arrowLength);
// 绘制箭头
CPen arrowPen(PS_SOLID, 2, RGB(255, 0, 0));
pDC->SelectObject(&arrowPen);
// 绘制左侧箭头
pDC->MoveTo(leftArrowStart);
pDC->LineTo(leftArrowEnd);
pDC->Polygon(CPoint[]{leftArrowEnd, CPoint(leftArrowEnd.x - arrowWidth, leftArrowEnd.y - arrowWidth), CPoint(leftArrowEnd.x - arrowWidth, leftArrowEnd.y + arrowWidth)});
// 绘制右侧箭头
pDC->MoveTo(rightArrowStart);
pDC->LineTo(rightArrowEnd);
pDC->Polygon(CPoint[]{rightArrowEnd, CPoint(rightArrowEnd.x + arrowWidth, rightArrowEnd.y - arrowWidth), CPoint(rightArrowEnd.x + arrowWidth, rightArrowEnd.y + arrowWidth)});
// 绘制上方箭头
pDC->MoveTo(topArrowStart);
pDC->LineTo(topArrowEnd);
pDC->Polygon(CPoint[]{topArrowEnd, CPoint(topArrowEnd.x - arrowWidth, topArrowEnd.y + arrowWidth), CPoint(topArrowEnd.x + arrowWidth, topArrowEnd.y + arrowWidth)});
// 绘制下方箭头
pDC->MoveTo(bottomArrowStart);
pDC->LineTo(bottomArrowEnd);
pDC->Polygon(CPoint[]{bottomArrowEnd, CPoint(bottomArrowEnd.x - arrowWidth, bottomArrowEnd.y - arrowWidth), CPoint(bottomArrowEnd.x + arrowWidth, bottomArrowEnd.y - arrowWidth)});
}
```
在这个例子中,我们首先创建了一个矩形,然后计算出它的中心点坐标。接着,我们根据箭头的长度和宽度计算出了每个箭头的起点和终点坐标,并使用 CDC 类的相关函数绘制箭头。
需要注意的是,我们使用了一个红色的画笔来绘制箭头,线宽为 2。同时,我们使用了三角形作为箭头的头部。如果需要绘制其他形状的箭头,可以根据需求修改代码。
最后,我们在 OnDraw 函数中调用了绘制箭头的代码,这样就可以在矩形的四条边上绘制出箭头了。
阅读全文