版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、 计算机科学系实验报告 (首页)课程名称 计算机图形学 班 级 实验名称 计算机图形学综合实验 (二) 指导教师 姓名 学 号 日 期 2011年11月16日 一、实验目的1画饼分图2区域着色二、实验设备与环境Windows XP操作系统、Visual C+6.0三、算法说明、程序清单及运行结果画饼分图算法说明用到了画圆和直线的算法思想,将两者结合起来,分别画一个圆和两条直线,长度为半径。画饼分图源程序:void CMyView:OnPiegraph() / TODO: Add your command handler code here/先画一个圆 CDC* pDC=GetDC(); int
2、 xc=200,yc=200,radius=100,c=RGB(0,0,255); int x1=0,y1=radius,p=3-2*radius; while(x1SetPixel(xc+x1,yc+y1,c); pDC-SetPixel(xc-x1,yc+y1,c); pDC-SetPixel(xc+x1,yc-y1,c); pDC-SetPixel(xc-x1,yc-y1,c); pDC-SetPixel(xc+y1,yc+x1,c); pDC-SetPixel(xc-y1,yc+x1,c); pDC-SetPixel(xc+y1,yc-x1,c); pDC-SetPixel(xc-y1
3、,yc-x1,c); if(pSetPixel(xc+x1,yc+y1,c); pDC-SetPixel(xc-x1,yc+y1,c); pDC-SetPixel(xc+x1,yc-y1,c); pDC-SetPixel(xc-x1,yc-y1,c); pDC-SetPixel(xc+y1,yc+x1,c); pDC-SetPixel(xc-y1,yc+x1,c); pDC-SetPixel(xc+y1,yc-x1,c); pDC-SetPixel(xc-y1,yc-x1,c);/画一条直线,作为圆的半径 int x3=100,y3=200,x4=200,y4=300;int i,s1,s2,
4、interchange;int x,y,deltax,deltay,f,temp;x=200;y=200;deltax=abs(x4-x3); deltay=abs(y4-y3); if(x4-x3=0)s1=1;else s1=1;if(y4-y3=0)s2=-1;else s2=-1;if(deltaydeltax)temp=deltax;deltax=deltay;deltay=temp;interchange=1;else interchange=0;f=2*deltay-deltax; pDC-SetPixel(x,y,c);for(i=1;i=0)if(interchange=1)
5、x+=s1; else y+=s2; pDC-SetPixel(x,y,c);f=f-2*deltax;else if(interchange=1)y+=s2;else x+=s1;f=f+2*deltay;/再画一条半径 int x5=100,y5=300,x6=200,y6=400;int j,s3,s4,interchange1;x=200;y=200;deltax=abs(x6-x5); deltay=abs(y6-y5); if(x6-x5=0)s3=1;else s3=-1;if(y6-y5=0)s4=1;else s4=-1;if(deltaydeltax)temp=deltax
6、;deltax=deltay;deltay=temp;interchange=1;else interchange=0;f=2*deltay-deltax; pDC-SetPixel(x,y,c);for(i=1;i=0)if(interchange=1)x+=s3; else y+=s4; pDC-SetPixel(x,y,c);f=f-2*deltax;else if(interchange=1)y+=s4;else x+=s3;f=f+2*deltay;实验结果抓图区域着色算法说明1、 在VC中用MFC生成一个窗口。2、在该窗口的CSaoMiaoView类中添加ScanLineFill4
7、()函数。 3、在OnDraw函数中调用ScanLineFill4 ()函数。4、调试运行。编程与代码oldcolor = RGB(0,255,0),newcolor = RGB(255,0,0);void CSaoMiaoView:ScanLineFill4(int x,int y,COLORREF oldcolor,COLORREF newcolor)int xl,xr,i;CClientDC dc(this);HDC hdc = dc.GetSafeHdc();bool spanNeedFill;Seed pt;m_LinkStack.SetEmpty();pt.x = x;pt.y =
8、 y;m_LinkStack.push(pt);while(!m_LinkStack.IsEmpty()m_LinkStack.pop(pt);y = pt.y;x = pt.x;while(:GetPixel(hdc,x,y) = oldcolor)SetPixel(hdc,x,y,newcolor);x+;xr = x-1;x = pt.x-1;while(:GetPixel(hdc,x,y) = oldcolor)SetPixel(hdc,x,y,newcolor);x-;xl = x+1;x = xl;y = y+1;while(xxr)spanNeedFill=FALSE;while
9、(:GetPixel(hdc,x,y)=oldcolor)spanNeedFill = TRUE;x+;if(spanNeedFill)pt.x = x-1;pt.y = y;m_LinkStack.push(pt);spanNeedFill = FALSE;while(:GetPixel(hdc,x,y)!=oldcolor & xxr)x+;x = xl;y = y-2;while(xxr)spanNeedFill =FALSE;while(:GetPixel(hdc,x,y)=oldcolor)spanNeedFill = TRUE;x+;if(spanNeedFill)pt.x = x-1;pt.y = y;m_LinkStack.push(pt);spanNeedFill
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 《离婚法律程序执行细则协议》版
- 二零二五版保险及期货居间业务委托管理合同3篇
- 二零二五年度智慧社区商业配套租赁协议3篇
- 二零二五年度集成墙板原材料期货交易与风险管理合同2篇
- 二零二五年度高端人才引进与培养合同5篇
- 临时建筑建设合同样本2024年版版B版
- 2025年度智能厨房设备研发、安装与培训服务合同3篇
- 二零二五版公共工程合同担保制度及操作细则3篇
- 二零二五年电子设备采购与技术服务合同2篇
- 2024年简化版资金借用协议范本版B版
- DB-T29-74-2018天津市城市道路工程施工及验收标准
- 小学一年级20以内加减法混合运算3000题(已排版)
- 智慧工厂数字孪生解决方案
- 病机-基本病机 邪正盛衰讲解
- 品管圈知识 课件
- 非诚不找小品台词
- 2024年3月江苏省考公务员面试题(B类)及参考答案
- 患者信息保密法律法规解读
- 老年人护理风险防控PPT
- 充电桩采购安装投标方案(技术方案)
- 医院科室考勤表
评论
0/150
提交评论