第六节实验课
题目 1:2 次 Bezier 曲线绘制及时间函数的运用
实验目的:
了解和掌握 2 次 Bezier 曲线的特点及绘制方法;了解 WM_TIMER 消息的特点,并掌
握利用该消息编写动态运动图形的方法。
实验内容:
编写应用程序,让用户用鼠标在视图区内绘制一个多边形。多边形绘制完成后,绘
制该多边形的封闭内切曲线(曲线用红色绘制)。曲线为 2 次 Bezier 曲线,曲线在多
边形每条边的中点处与多边形相切。设多边形的顶点按顺序为 P1、P2、···、Pn。多边
形的各顶点以 50 毫秒为时间间隔按如下方式进行运动:
1) 奇数编号的顶点做水平运动(y 坐标不变,x 坐标改变),偶数编号的顶点做垂直
运动(x 坐标不变,y 坐标改变),每个顶点的运动步长为其顶点编号乘 3(Pi
点的运动步长为 3*i);
2) 如果顶点运动时遇到视图区边界,则改为向相反方向运动(确保多边形顶点不会
运动到视图区外),水平运动的顶点初始运动方向为向右(x 坐标变大),垂直运
动的顶点初始运动方向为向下(y 坐标变大)。
在系统默认工具条上添加两个按钮,分别用于开始和终止多边形顶点的运动。在多边
形顶点运动时,每次运动会产生一个新的多边形,绘制该多边形的封闭内切曲线并清
除上一个多边形及其封闭内切曲线。
附:可以用 GetClientRect 函数(视图类成员函数)获得视图区大小,在视图类的成
员函数中可用如下方式:
CRect rect;
this->GetClientRect(rect);
rect 的 right 成员为视图区的右边界,rect 的 bottom 成员为视图区的下边界
评论0