计算机图形课程设计报告.doc

上传人:小飞机 文档编号:4297056 上传时间:2023-04-14 格式:DOC 页数:12 大小:571KB
返回 下载 相关 举报
计算机图形课程设计报告.doc_第1页
第1页 / 共12页
计算机图形课程设计报告.doc_第2页
第2页 / 共12页
计算机图形课程设计报告.doc_第3页
第3页 / 共12页
计算机图形课程设计报告.doc_第4页
第4页 / 共12页
计算机图形课程设计报告.doc_第5页
第5页 / 共12页
点击查看更多>>
资源描述

《计算机图形课程设计报告.doc》由会员分享,可在线阅读,更多相关《计算机图形课程设计报告.doc(12页珍藏版)》请在三一办公上搜索。

1、计算机图形学课程设计项目题目: 圆内动态颜色填充 专 业: 计算机科学与技术 学 号: 112054141 姓 名: 汪智 指导教师: 李丽亚2014年6月目录一、 项目概述二、 项目需求三、 项目设计四、 项目效果五、 算法改进六、 项目总结一、 项目概述填充算法用于内部定义区域,以改变整个区域的颜色属性,它把区域内的原像素点值改变成另一种像素点值。算法中,读出像素点(x; y)像素点值。 此算法所采用的基本方法是首先确定(x; y)点的像素点是否在区域内尚未被访问过的那一部分之中,也就是说,如果这个像素点的值是原始值old-value,则需要把它改为填充的值new-value,然后按区域性

2、质先后访问其相邻的像素点,当访问其中每一个近邻像素点时,都要进行递归调用。填充算法,其基本思想是:从图形的一个内点开始,由内向外用给定的颜色画点直到边界为止。如果边界是以一种颜色指定的,则种子填充算法可逐个像素地处理直到遇到边界颜色为止。从区域内任意一点出发,通过各方向到达区域内的任意像素。二、 项目需求计算机图形学:(ComputerGraphics,简称CG)是一种使用数学算法将二维或三维图形转化为计算机显示器的栅格形式的科学。计算机图形学的主要研究内容就是研究如何在汁算机中表示图形、以及利用计算机进行图形的计算、处理和显示的相关原理与算法。图形通常由点、线、面、体等几何元素和灰度、色彩、

3、线型、线宽等非几何属性组成。从处理技术上来看,图形主要分为两类,一类是基于线条信息表示的。如工程图、等高线地图、曲面的线框图等,另一类是明暗图,也就是通常所说的真实感图形。计算机图形学一个主要目的就是要利用计算机产生令人赏心悦目的真实感图形。为此,必须建立图形所描述场景的几何表示,再用某种光照模型,计算在假想的光源、纹理、材质属性下的光照明效果。同时,真实感图形计算的结果是以数字图像的方式提供的,计算机图形学也就和图像处理有着密切的关系。计算机图形学的研究内容非常广泛,如图形硬件、图形标准、图形交互技术、光栅图形生成算法、曲线曲面造型、实体造型、真实感图形计算与显示算法、非真实感绘制,以及科学

4、计算可视化、计算机动画、自然景物仿真、虚拟现实等。三、 项目设计首先,创建Test MFC工程,在工程中的Testview找到OnDraw 开始画图。用函数Ellipse先作一个大圆,使圆大概在对话框的中央。然后再创建一个画笔和画刷,画笔使圆边界加粗加色,画刷使边界内填充颜色。接着用相同的方法再画四个同心圆,使每个圆的边界颜色不同,边界内填充的颜色也不同,这样就使的后画的圆覆盖了前面一个圆圆内的填充颜色,以达到不同颜色圆的效果。其次,用for(int i=0;i100;i+)语句设置圆渐变特效,用“Sleep(300);”设置圆变色的快慢。最后,添加上自己想要添加上的文本的内容,比如“happ

5、y everyday !”、“(made by WZ)”。用“pDC-SetTextColor(RGB(124,252, 0);”课随意设置文本的颜色。可以把“happy everyday !”放在for(int i=0;i100;i+)语句之中,以便达到同时进行动态的效果。四、 项目效果 五、 算法改进/ ProjectView.cpp : implementation of the CProjectView class/#include stdafx.h#include Project.h#include ProjectDoc.h#include ProjectView.h#ifdef _

6、DEBUG#define new DEBUG_NEW#undef THIS_FILEstatic char THIS_FILE = _FILE_;#endif/ CProjectViewIMPLEMENT_DYNCREATE(CProjectView, CView)BEGIN_MESSAGE_MAP(CProjectView, CView)/AFX_MSG_MAP(CProjectView)/ NOTE - the ClassWizard will add and remove mapping macros here./ DO NOT EDIT what you see in these bl

7、ocks of generated code!/AFX_MSG_MAP/ Standard printing commandsON_COMMAND(ID_FILE_PRINT, CView:OnFilePrint)ON_COMMAND(ID_FILE_PRINT_DIRECT, CView:OnFilePrint)ON_COMMAND(ID_FILE_PRINT_PREVIEW, CView:OnFilePrintPreview)END_MESSAGE_MAP()/ CProjectView construction/destructionCProjectView:CProjectView()

8、/ TODO: add construction code hereCProjectView:CProjectView()BOOL CProjectView:PreCreateWindow(CREATESTRUCT& cs)/ TODO: Modify the Window class or styles here by modifying/ the CREATESTRUCT csreturn CView:PreCreateWindow(cs);/ CProjectView drawingvoid CProjectView:OnDraw(CDC* pDC)CProjectDoc* pDoc =

9、 GetDocument();ASSERT_VALID(pDoc);/ TODO: add draw code for native data herefor(int i=0;iSelectObject(&newBrush1);pDC-SelectObject(&newpen);pDC-Ellipse(450+i,45+i,850-i,445-i); /画圆CPen newpen2;newpen2.CreatePen(PS_SOLID,25,RGB(0,0,200);CBrush newBrush2;newBrush2.CreateSolidBrush(RGB(100,200,00);pDC-

10、SelectObject(&newBrush2);pDC-SelectObject(&newpen2); pDC-Ellipse(500+i,95+i,800-i,395-i); CPen newpen3;newpen3.CreatePen(PS_SOLID,25,RGB(200,500,100);CBrush newBrush3;newBrush3.CreateSolidBrush(RGB(150,100,50);pDC-SelectObject(&newBrush3);pDC-SelectObject(&newpen3);pDC-Ellipse(550+i,145+i,750-i,345-

11、i);CPen newpen4;newpen4.CreatePen(PS_SOLID,25,RGB(200,50,100);CBrush newBrush4;newBrush4.CreateSolidBrush(RGB(0125,05,50);pDC-SelectObject(&newBrush4);pDC-SelectObject(&newpen4);pDC-Ellipse(600+2*i,195+2*i,700-2*i,295-2*i);CPen newpen5;newpen5.CreatePen(PS_SOLID,25,RGB(200,500,100);CBrush newBrush5;

12、newBrush5.CreateSolidBrush(RGB(255,0,00);pDC-SelectObject(&newBrush5);pDC-SelectObject(&newpen5);pDC-Ellipse(600+i,195+i,700-i,295-i); CFont newfont,*poldfont;newfont.CreateFont(80,50,0,0,FW_THIN,true,false,false,CHINESEBIG5_CHARSET,OUT_CHARACTER_PRECIS,CLIP_CHARACTER_PRECIS,DEFAULT_QUALITY,FF_MODER

13、N,宋体); /修改文本字体大小poldfont=pDC-SelectObject(&newfont);pDC-SetTextColor(RGB(255,200, 0); /设置文本颜色pDC-TextOut(400-i,480,Have Fun !); /文本坐标及内容CBrush newBrush;newBrush.CreateSolidBrush(RGB(0,0,0);pDC-SelectObject(&newBrush);pDC-Ellipse(630,225,670,265); for(int j=0;jSelectObject(&newfont); /设置文本大小pDC-SetTe

14、xtColor(RGB(124,252, 0); /设置文本颜色pDC-TextOut(300,700-j,(made by WZ);/ CProjectView printingBOOL CProjectView:OnPreparePrinting(CPrintInfo* pInfo)/ default preparationreturn DoPreparePrinting(pInfo);void CProjectView:OnBeginPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/)/ TODO: add extra initialization

15、before printingvoid CProjectView:OnEndPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/)/ TODO: add cleanup after printing/ CProjectView diagnostics#ifdef _DEBUGvoid CProjectView:AssertValid() constCView:AssertValid();void CProjectView:Dump(CDumpContext& dc) constCView:Dump(dc);CProjectDoc* CProjectView:

16、GetDocument() / non-debug version is inlineASSERT(m_pDocument-IsKindOf(RUNTIME_CLASS(CProjectDoc);return (CProjectDoc*)m_pDocument;#endif /_DEBUG/ CProjectView message handlers六、 项目总结由于属于初学MFC且时间有限,所以对于设计难免也诸多的不足,很多东西都要马上学习查资料并进行初步调试即拿出来使用。而制作出的前台功能单一结构简单是一大缺憾,没有时间进行精加工与进一步的调试补全源程序的不足之处使之更加完善。不过通过这次

17、的课程设计,使我们的自学能力与动手实践能力得到相当大的提高,编程并不是靠看书本就能学会的,而是要靠一步步的调试一条条指令的修改试运行中学习进步的,盲目的看书并不能提高自己水平。从这次的课程设计我们知道了自己的不足,学习的知识不够充分,对于现有资源材料的利用学习率太。附录:1 梁俊杰,冯玉才. LBD:基于局部位码比较的高维空间KNN搜索算法J. 计算机科学. 2007(06) 2 沈永增,叶鸿敏,张敏捷. 基于高维空间几何分析理论的图像增强实现J. 计算机仿真. 2007(06) 3 李静,王文成,吴恩华. 基于凸剖分的多边形窗口线裁剪算法J. 计算机辅助设计与图形学学报. 2007(04)

18、4 敖雁,徐辰武. 贝叶斯回归分析方法及其在QTL作图中的应用J. 扬州大学学报. 2005(02) 5 刘勇,徐从富,陈卫东,潘云鹤. 带圆弧简单多边形的面积公式获取算法J. 计算机辅助设计与图形学学报. 2005(04) 6 董未名,玛依拉巴榜,周登文,孙家广. 平面扩展简单多边形的布尔运算J. 计算机辅助设计与图形学学报. 2003(09) 7 汪树玉,刘国华,刘立军,张利. 观测数据分析中几种方法的探讨 (一)回归时间序列模型和贝叶斯预测模型J. 水电自动化与大坝监测. 2003(02) 8 朱雅音,王化文,万丰,于雷易. 确定两个任意简单多边形交、并、差的算法J. 计算机研究与发展. 2003(04) 9 陶卿,曹进德,孙德敏. 基于支持向量机分类的回归方法J. 软件学报. 2002(05) 10 王守觉,王柏南. 人工神经网络的多维空间几何分析及其理论J. 电子学报. 2002(01)

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号