如何在OnDraw函数中添加CDC类自带的绘制Bezier曲线的函数
时间: 2023-12-10 13:03:34 浏览: 198
在OnDraw函数中添加CDC类自带的绘制Bezier曲线的函数,可以使用CDC类的成员函数 PolyBezier() 或 PolyBezierTo()。
PolyBezier() 函数绘制一系列的Bezier曲线,它接受一个 POINT 数组作为参数,数组中的每个点表示一条Bezier曲线的终点,除了第一个点以外,其余的每三个连续的点形成一条Bezier曲线。例如:
```cpp
void CMyView::OnDraw(CDC* pDC)
{
// 绘制一条由三条Bezier曲线组成的曲线
POINT points[] = { {100, 100}, {150, 50}, {200, 100}, {250, 150}, {300, 100}, {350, 50}, {400, 100} };
pDC->PolyBezier(points, 7);
}
```
PolyBezierTo() 函数绘制一条Bezier曲线,它接受一个 POINT 数组和一个整数作为参数,数组中的每个点表示一条Bezier曲线的控制点,整数表示数组中点的数量,包括起点和终点。例如:
```cpp
void CMyView::OnDraw(CDC* pDC)
{
// 绘制一条从 (100, 100) 到 (400, 100) 的Bezier曲线,控制点分别为 (150, 50), (250, 150), (350, 50)
POINT points[] = { {150, 50}, {250, 150}, {350, 50} };
pDC->MoveTo({100, 100});
pDC->PolyBezierTo(points, 3);
pDC->LineTo({400, 100});
}
```
注意,在使用 PolyBezier() 或 PolyBezierTo() 函数之前,需要先将画笔选入 CDC 对象中。例如:
```cpp
void CMyView::OnDraw(CDC* pDC)
{
// 选择画笔
CPen pen(PS_SOLID, 2, RGB(255, 0, 0));
pDC->SelectObject(&pen);
// 绘制Bezier曲线
POINT points[] = { {100, 100}, {150, 50}, {200, 100}, {250, 150}, {300, 100}, {350, 50}, {400, 100} };
pDC->PolyBezier(points, 7);
}
```
阅读全文