用ondraw(cdc*pdc)画五角星
时间: 2023-12-16 21:06:27 浏览: 97
好的,以下是用OnDraw(CDC* pDC)函数画五角星的示例代码:
```
void CMyView::OnDraw(CDC* pDC)
{
CView::OnDraw(pDC);
CPen pen(PS_SOLID, 1, RGB(0, 0, 0));
CPen* pOldPen = pDC->SelectObject(&pen);
CBrush brush(RGB(255, 255, 255));
CBrush* pOldBrush = pDC->SelectObject(&brush);
int x = 200, y = 200; // 五角星中心点坐标
int r = 50; // 外接圆半径
int a = r * sin(18 * PI / 180) / sin(126 * PI / 180); // 五角星的顶点到中心点的距离
CPoint points[5];
for (int i = 0; i < 5; i++)
{
points[i].x = x + r * cos((18 + i * 72) * PI / 180);
points[i].y = y - r * sin((18 + i * 72) * PI / 180);
}
pDC->Polygon(points, 5);
pDC->SelectObject(pOldBrush);
pDC->SelectObject(pOldPen);
}
```
解释一下代码:
1. 创建一个黑色的画笔和白色的画刷。
2. 定义五角星的中心点坐标、外接圆半径和五角星的顶点到中心点的距离。
3. 通过循环计算出五个顶点的坐标,并存储在一个 CPoint 类型的数组中。
4. 调用 CDC 类的 Polygon 函数绘制五角星。
5. 恢复原来的画刷和画笔。
阅读全文