制图3 VC绘图.pptVIP

  1. 1、本文档共68页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
制图3 VC绘图

* 绘图函数 6.画矩形 Rectangle(int x1,int y1,int x2,int y2); 除画矩形边界外,还用当前画刷填充闭合区域。 7.画椭圆/圆 Ellipse(int x1,int y1,int x2,int y2); x1、y1和x2、y2确定边界矩形,椭圆由此矩形确定。边界矩形是正方形时画出的是圆。该函数同时用当前画刷填充闭合区域。 * 屏幕绘图程序 编制一个屏幕绘图程序,除要遵守一般程序设计的要求外,还应特别注意如下几点: 通过CDC类对象进行屏幕输出; 设置设备描述表对象的输出属性; 创建及选择绘图工具; 为图形准备数据; 用CDC类对象的绘图函数画图; 恢复原有设备描述表对象的输出属性,以及恢复原绘图工具对象; 删除用户动态建立的绘图工具。 * 例1: 画滚圆。大圆半径r1,小圆半径r2=r1/2, 均匀滚动24次。 * #include math.h void CEx14View::OnDraw(CDC* pDC) { CRect rc; GetClientRect(rc); int xo,yo,r1=300,r2,xc,yc; double pi=3.141592654,alpha; r2=(int)r1/2; xo=(int)rc.right/2; yo=(int)rc.bottom/2; pDC-SelectStockObject(NULL_BRUSH); pDC-SetMapMode(MM_LOMETRIC); pDC-SetViewportOrg(xo,yo); pDC-Ellipse(-r1,-r1,r1,r1); for (alpha=0;alpha2*pi;alpha+=pi/12) { xc=(int)(r2*cos(alpha)); yc=(int)(r2*sin(alpha)); pDC-Ellipse(xc-r2,yc-r2,xc+r2,yc+r2); } } * 例2: 椭圆的长半径从800按50递减至0,同时短半径从0按50 递增至800,由此构成了17个同心椭圆。 * void CTestView::OnDraw(CDC* pDC) { CRect cr; GetClientRect(cr); pDC-SetMapMode(MM_ISOTROPIC); pDC-SetWindowExt(1700,1700); pDC-SetViewportExt(cr.right, -cr.bottom); pDC-SetViewportOrg(cr.right/2, cr.bottom/2); pDC-SelectStockObject(HOLLOW_BRUSH); CRect r(-800,0,800,0); int i; for(i=0;i17;i++) { if(r.Height()==0 || r.Width()==0){ pDC-MoveTo(r.TopLeft()); pDC-LineTo(r.BottomRight()); }else{ pDC-Ellipse(r); } r.left+=50; r.right-=50; r.top+=50; r.bottom-=50; } } * 例3:按控制尺寸画大门。 * 思路: 1.图形左右对称,可只描述一半图形,经过x坐标改变符号,可得另一半图形。 2.为坐标的变换和取值方便,采用自定义宏的办法自定义坐标系: #define fnx(x) (int)(xo+(x)*s*sl) #define fny(y) (int)(yo-(y)*sl) * 1. int s, xo,yo; double sl; void draw(); 2. #define fnx(x) (int)(xo+(x)*s*sl) #define fny(y) (int)(yo-(y)*sl) 3. s=1; sl=.5; * void CEx_16View::OnDraw(CDC* pDC) { CEx_16Doc* pDoc = GetDocument(); ASSERT_VALID(pDoc); // TODO: add draw code for native data here CRect rc; GetClientRect(rc); xo=rc.right/2; yo=rc.bottom/2+100; draw(); s=-s; draw(); } * void CEx_16View::draw() { int i; CCl

文档评论(0)

118zhuanqian + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档