计算机图形学画直线——制作过程

计算机图形学画直线——制作过程

ID:9484958

大小:989.50 KB

页数:12页

时间:2018-05-01

计算机图形学画直线——制作过程_第1页
计算机图形学画直线——制作过程_第2页
计算机图形学画直线——制作过程_第3页
计算机图形学画直线——制作过程_第4页
计算机图形学画直线——制作过程_第5页
资源描述:

《计算机图形学画直线——制作过程》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、本次程序是计算机图形学老师刚刚布置的一道作业,要求我们画出任意直线的点阵图。在这里分享下制作的过程及效果,希望有兴趣各位朋友能够及时提醒我其中的不足,谢谢!步骤:(一)打开VC++6.0,创建一个MFCAppWizard(exe),工程名为:jask_jd_Line,选择但文档类型,在应用程序向导第六步将基类改为“CFormView”,单击“完成”,创建完成。(二)创建一个新对话框IDD_DLG_INPUT,用来输入直线方程。并添加控件如下:控件名称控件ID控件标题组框IDC_STATIC方程式:静态文本IDC_

2、STATICY=编辑框IDC_EDIT1静态文本IDC_STATICX+编辑框IDC_EDIT_SEND静态文本IDC_EDIT2按钮IDOK确定按钮IDCANCEL取消如图:(三)用类向导为对话框IDD_DLG_INPUT创建一个新类CFuncInput,并为控件添加变量:(一)在CFuncInput::DoDataExchange(CDataExchange*pDX)函数中添加如下代码初始化对话框变量值:(这样当弹出对话框时就编辑框中就会有初始值,当然这个也可以不要)SetDlgItemText(IDC_ED

3、IT1,"1");SetDlgItemText(IDC_EDIT2,"0");(二)打开ResourceView进入Menu项,(删除默认的菜单项,左键单机菜单主项,按Delete就可以了,但是别全部删除了,不然这个菜单会消失的,之后就是编译会出问题,在全部删除之前添加菜单“操作”,这个不用多介绍吧,如下:IDM_DRAWLINE画线(&D)IDM_NEW刷新(&N)IDM_COLOR颜色(&C)(三)用类向导为这三个菜单ID添加响应函数,并添加代码如下:voidCTask_jd_LineView::OnDraw

4、line()//主要的函数,根据输入的方程式进行绘制直线{//TODO:AddyourcommandhandlercodehereCFuncInputdlg;//这里注释下,要在task_jd_LineView.h文件中添加#include"FuncInput.h"包含新建的类if(dlg.DoModal()==IDOK){floatk,c;k=StringtoInt(dlg.m_k);c=StringtoInt(dlg.m_c);//这个StringtoInt是自己定义的函数,代码见后文CDC*pDC=GetD

5、C();CBrushbrush(Color);CBrush*old=pDC->SelectObject(&brush);CRectrt;GetClientRect(&rt);if(k>=0&&k<=1)//斜率大于0且小于1{intx=-(rt.Width()/2)/10;inty=(int)(k*x+c+0.5);floate=k*x+c-y-0.5;for(inti=0;i<=rt.Width()/10;i++){pDC->Ellipse(rt.Width()/2+x*10-3,rt.Height()/2-y

6、*10-3,rt.Width()/2+x*10+3,rt.Height()/2-y*10+3);x++;e+=k;if(e>=0){y++;e--;}}}elseif(k>=-1&&k<0)//斜率大于-1且小于0{intx=-(rt.Width()/2)/10;inty=(int)(k*x+c+0.5);floate=k*x+c-y+0.5;for(inti=0;i<=rt.Width()/10;i++){pDC->Ellipse(rt.Width()/2+x*10-3,rt.Height()/2-y*10-3

7、,rt.Width()/2+x*10+3,rt.Height()/2-y*10+3);x++;e+=k;if(e<0){y--;e++;}}}elseif(k>1)//斜率大于1{inty=-(rt.Height()/2)/10;intx=(int)((y-c)/k+0.5);floate=(y-c)/k-x-0.5;for(inti=0;i<=rt.Width()/10;i++){pDC->Ellipse(rt.Width()/2+x*10-3,rt.Height()/2-y*10-3,rt.Width()/2

8、+x*10+3,rt.Height()/2-y*10+3);y++;e+=1/k;if(e>=0){x++;e--;}}}else//斜率小于-1{inty=-(rt.Height()/2)/10;intx=(int)((y-c)/k+0.5);floate=(y-c)/k-x+0.5;for(inti=0;i<=rt.Width()/10;i++){pDC->Ellip

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。