计算机图形学画直线——制作过程.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文档。上传文档
查看更多
计算机图形学画直线——制作过程

本次程序是计算机图形学老师刚刚布置的一道作业,要求我们画出任意直线的点阵图。在这里分享下制作的过程及效果,希望有兴趣各位朋友能够及时提醒我其中的不足,谢谢! 步骤: 打开VC++6.0,创建一个MFC AppWizard(exe),工程名为:jask_jd_Line,选择但文档类型,在应用程序向导第六步将基类改为“CFormView”,单击“完成”,创建完成。 创建一个新对话框IDD_DLG_INPUT,用来输入直线方程。并添加控件如下: 控件名称 控件ID 控件标题 组框 IDC_STATIC 方程式: 静态文本 IDC_STATIC Y= 编辑框 IDC_EDIT1 静态文本 IDC_STATIC X+ 编辑框 IDC_EDIT_SEND 静态文本 IDC_EDIT2 按钮 IDOK 确定 按钮 IDCANCEL 取消 如图: 用类向导为对话框IDD_DLG_INPUT创建一个新类CFuncInput,并为控件添加变量: 在CFuncInput::DoDataExchange(CDataExchange* pDX)函数中添加如下代码初始化对话框变量值:(这样当弹出对话框时就编辑框中就会有初始值,当然这个也可以不要) SetDlgItemText(IDC_EDIT1,1); SetDlgItemText(IDC_EDIT2,0); 打开ResourceView进入Menu项,(删除默认的菜单项,左键单机菜单主项,按Delete就可以了,但是别全部删除了,不然这个菜单会消失的,之后就是编译会出问题,在全部删除之前添加菜单“操作”,这个不用多介绍吧,如下: IDM_DRAWLINE 画线(D) IDM_NEW 刷新(N) IDM_COLOR 颜色(C) 用类向导为这三个菜单ID添加响应函数,并添加代码如下: void CTask_jd_LineView::OnDrawline() //主要的函数,根据输入的方程式进行绘制直线 { // TODO: Add your command handler code here CFuncInput dlg; //这里注释下,要在task_jd_LineView.h文件中添加#includeFuncInput.h包含新建的类 if(dlg.DoModal()==IDOK) { float k,c; k=StringtoInt(dlg.m_k); c=StringtoInt(dlg.m_c); //这个StringtoInt是自己定义的函数,代码见后文 CDC *pDC=GetDC(); CBrush brush(Color); CBrush *old=pDC-SelectObject(brush); CRect rt; GetClientRect(rt); if(k=0k=1) //斜率大于0且小于1 { int x=-(rt.Width()/2)/10; int y=(int)(k*x+c+0.5); float e=k*x+c-y-0.5; for(int i=0;i=rt.Width()/10;i++) { pDC-Ellipse(rt.Width()/2+x*10-3,rt.Height()/2-y*10-3,rt.Width()/2+x*10+3,rt.Height()/2-y*10+3); x++; e+=k; if(e=0) { y++; e--; } } } else if(k=-1k0) //斜率大于-1且小于0 { int x=-(rt.Width()/2)/10; int y=(int)(k*x+c+0.5); float e=k*x+c-y+0.5; for(int i=0;i=rt.Width()/10;i++) { pDC-Ellipse(rt.Width()/2+x*10-3,rt.Height()/2-y*10-3,rt.Width()/2+x*10+3,rt.Height()/2-y*10+3); x++; e+=k; if(e0) { y--; e++; } } } else if(k1) //斜率大于1 { int y=-(rt.Height()/2)/10; int x=(int)((y-c)/k+0.5); float e=(y-c)/k-x-0

文档评论(0)

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

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

1亿VIP精品文档

相关文档