网站建设过程中的网站设计怎么做,家在深圳 凡人琐事,友链交换,各网站推广绘制椭圆弧线函数是MFC基本绘图函数#xff0c;这个函数需要的参数比较多#xff0c;共四对坐标点。前两对坐标点确定椭圆的位置与大小#xff0c;后两对坐标确定椭圆弧线的起点与终点。 一、绘制椭圆弧线函数 原型#xff1a;BOOL Arc(int x1,int y1,int x2,int y2… 绘制椭圆弧线函数是MFC基本绘图函数这个函数需要的参数比较多共四对坐标点。前两对坐标点确定椭圆的位置与大小后两对坐标确定椭圆弧线的起点与终点。 一、绘制椭圆弧线函数 原型BOOL Arc(int x1,int y1,int x2,int y2,int x3,int y3,int x4,int y4); 参数(x1,y1)、(x2,y2)椭圆内切矩形左上角、右下角坐标(x3,y3)、(x4,y4)椭圆弧线的起点、终点坐标 返回值绘制成功返回非0数失败返回0 说明 a.函数Arc是CDC类的成员函数使用时需要CDC类对象或指针调用 b.弧的起点、终点可以在椭圆上也可以不在椭圆上不在椭圆上时起点、终点坐标点与椭圆中心的连接线割出椭圆弧线。 c.画椭圆弧的默认方向为逆时针方向起点、终点弄反了会画出另一半弧线。如果希望改变椭圆弧的绘制方向可用下面函数进行设置。 原型 int SetArcDirection(int nArcDirection); 参数 逆时针方向绘制 AD_COUNTERCLOCKWISE 缺省 顺时针方向 AD_CLOCKWISE 返回值 成功返回弧的方向失败返回0 说明该函数是CDC类的成员函数使用时需要CDC类对象或指针调用。 二、椭圆弧线的绘制 一、绘制弧线与绘制直线相同仅涉及画笔不涉及画刷画笔的设置方法在绘制直线段时已经介绍过这里不再赘述。 二、在描述坐标点时使用的一直是x,y方式。在《MFC图形函数学习03——画直线段函数》曾提到过MoveTo函数的返回值类型是CPoint还提到CPoint类与POINT结构体类似可以表示的某点的坐标代替x,y这种写法。这里简要介绍一下CPoint类和POINT结构体。 1、CPoint类 CPoint类是点类凡是使用int x,int y作参数的地方均可利用已经赋值的CPoint对象作参数。CPoint类的声明、使用方法介绍如下 a.声明CPoint类对象 CPoint myPoint; b.为声明的对象赋初值CPoint类有两个属性x和y。例如myPoint.x10; myPoint.y20;。 c.也可以在声明CPoint对象时使用构造函数赋值CPoint myPoint(10,20);。也可以利用CPoint的已赋值对象来初始化另一个对象方法包括利用构造函数例CPoint a(myPoint),也可以利用重载的等号例CPoint amyPoint。 d.CPoint的成员函数offset可以对CPoint对象指定偏移量。例如myPoint.offset(10,20);表示myPoint从当前位置x增加10y增加20。 e.CPoint类还重载了“”和“!”可以检查两个点是否相同或不同。也可以对两个CPoint对象利用重载的“”、“-”符号进行加减运算。 2.POINT结构体 POINT结构体有两个属性x和y。使用方法与CPoint类相同声明对象POINT p;赋值p.x20;、p.y30;。 关于CPoint类、POINT结构体的具体使用方法暂不介绍待后续介绍完CRect类、RECT结构体、LPRECT指针后再在案例中介绍使用方法。 三、案例程序 题目在设备坐标系中画出矩形-100,-50,100,50内切椭圆被Y轴、X轴截取的椭圆弧然后以X方向每次100、Y方向每次50放大椭圆椭圆中心不变并画出被Y轴、X轴截取的椭圆弧至X或Y方向满窗口停止。弧线颜色为绿色宽度3像素。代码及注释如下 //定义绿色画笔并选入CDCCPen greenPen(PS_SOLID, 3, 0x00ff00);CPen* oldPenpDC-SelectObject(greenPen);
//初始椭圆内切矩形坐标int x1 -100, y1 -50, x2 100, y2 50;
//截取弧线起点、终点坐标放到椭圆外对所有椭圆生效CRect rect;GetClientRect(rect); //获取窗口信息int startX 0, startY rect.bottom; //在Y轴顶端设备坐标系int endX rect.right, endY 0; //在X轴顶端
//利用循环绘制椭圆弧线while (TRUE){if (x2 rect.right || y2 rect.bottom)break; //退出条件pDC-Arc(x1,y1,x2,y2,startX,startY,endX,endY); //画弧线x1 x1 - 100; y1 y1 - 50; //放大椭圆x2 x2 100; y2 y2 50;}pDC-SelectObject(oldPen); //恢复画笔 说明内切矩形的左上角坐标自始至终在绘图窗口之外而程序运行是正常的也就是说MFC绘图函数是允许把图绘到屏幕之外对此并不会报错。比如案例程序不这样写取消用X轴和Y轴切割弧线而是用透明画刷做填充颜色画椭圆由于设备坐标系只有一个象限其余部分显示不出来结果和切割椭圆弧一样。 四、案例程序运行截图