MFC画圆.docVIP

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

实验4 实现圆的生成算法 一、实验目的 1. 熟悉CDC图形程序库; 2. 掌握中点画圆生成算法; 3. 掌握Bresenham画圆算法。 二、实验内容 利用VisualC++6.0设计一个简易画圆绘图板,验证圆生成算法。 三、实验指导 1. 生成绘图应用程序的框架,如下图所示。 具体实现见第二次实验,过程不再详细说明。 2. 在应用程序中增加菜单 完成相关菜单的设计,具体的效果如下图所示,并设置好相关菜单消息的映射,具体的实现在前面的实验中介绍过,再此不在详细说明。 3. 在绘图函数中添加代码 通过以上步骤,得到了与菜单对应的消息映射,就可以在函数中添加代码绘制图形了。 (1)利用中点画圆算法实现圆的生成(算法原理见教材)。 void CDraw_CirView::OnMid() { // TODO: Add your command handler code here CDC*pDC=GetDC();//得到绘图类指针 RedrawWindow();//重绘窗口 int x,y,x0=200,y0=200,r=100;//圆的圆心为(x0,y0),半径为r float d; x=0; y=r; d=1.25-r; pDC-SetPixel(x+x0,y+y0,RGB(255,0,0)); pDC-SetPixel(y+x0,x+y0,RGB(255,0,0)); pDC-SetPixel(y+x0,-x+y0,RGB(255,0,0)); pDC-SetPixel(x+x0,-y+y0,RGB(255,0,0)); pDC-SetPixel(-x+x0,-y+y0,RGB(255,0,0)); pDC-SetPixel(-y+x0,-x+y0,RGB(255,0,0)); pDC-SetPixel(-y+x0,x+y0,RGB(255,0,0)); pDC-SetPixel(-x+x0,y+y0,RGB(255,0,0)); while(x=y) { if(d0) { d=d+2*x+3; x++; } else { d=d+2*(x-y)+5; x++; y--;} pDC-SetPixel(x+x0,y+y0,RGB(255,0,0)); pDC-SetPixel(y+x0,x+y0,RGB(255,0,0)); pDC-SetPixel(y+x0,-x+y0,RGB(255,0,0)); pDC-SetPixel(x+x0,-y+y0,RGB(255,0,0)); pDC-SetPixel(-x+x0,-y+y0,RGB(255,0,0)); pDC-SetPixel(-y+x0,-x+y0,RGB(255,0,0)); pDC-SetPixel(-y+x0,x+y0,RGB(255,0,0)); pDC-SetPixel(-x+x0,y+y0,RGB(255,0,0)); } } 由以上代码绘出的图形如下: (2)利用Bresenham算法生成圆(算法原理见教材)。 void CDraw_CirView::OnBre() { // TODO: Add your command handler code here CDC*pDC=GetDC();//得到绘图类指针 //RedrawWindow();//重绘窗口 int x,y,x0=200,y0=200,r=50;//圆的圆心为(x0,y0),半径为r int delta,delta1,delta2,direction; x=0;y=r; delta=2*(1-r); while(y=0) { pDC-SetPixel(x+x0,y+y0,RGB(0,0,255)); pDC-SetPixel(x+x0,-y+y0,RGB(0,0,255)); pDC-SetPixel(-x+x0,y+y0,RGB(0,0,255)); pDC-SetPixel(-x+x0,-y+y0,RGB(0,0,255)); if(delta0) { delta1=2*(delta+y)-1; if(delta=0)direction=1; else direction=2; } else if(delta0) { delta2=2*(delta-x)-1; if(delta2=0)direction=2; else direction=3; } else direction=2;

文档评论(0)

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

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

1亿VIP精品文档

相关文档