ImageVerifierCode 换一换
格式:DOCX , 页数:21 ,大小:93.78KB ,
资源ID:11755960      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/11755960.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(c++课程设计报告简易图像处理.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

c++课程设计报告简易图像处理.docx

1、c+课程设计报告简易图像处理目录第一章 绪论 1第二章 设计思路 1第三章 软件设计步骤 23.1设置线形功能的设计 错误!未定义书签。3.2选择线宽功能的设计 53.3选择图形功能的设计 63.4画刷功能的设计 133.5 最小化窗口问题的改善 14第四章 心得与体会 17附录 18致谢 18参考文献 19第一章 绪论Internet画板的基本功能包括基本图形绘制和填充(直线、椭圆、四边形、多边形),更改图元绘制条件(改变线条颜色、线型、填充方式)和图元的保存功能。此外,该画板是基于计算机网络的在线画图系统。该软件从几何学性质出发,使用较为成熟的面向对象C+语言作为画板的开发工具,在网络传输

2、中采用了多线程技术,解决了用户与用户通过合作式学习软件进行学习,讨论问题。I第二章 设计思路设置选择线形功能(实线,虚线)设置线宽功能(1,3,5) 简易图形处理程序选择颜色功能选择图形功能(圆,椭圆,矩形,画笔)画刷功能第三章 软件设计步骤3.1设置线形功能的设计1.新建一个MFC单文档程序,取名为Draw2.在CDrawView类中添加一个成员变量p1,用于记录画线的第一个点右键单击-Add Member Variable-Variable Type CPointVariable Name p1Access private再添加第二个成员变量p2,用于记录画线的第二个点右键单击-Add M

3、ember Variable-Variable Type CPointVariable Name p2Access private3.在类视图CDrawView类上单击鼠标右键,选择Add Windows Message Handler单击WM_LButtonDown,然后再单击“Add Handler”按钮单击WM_MouseMove,然后再单击“Add Handler”按钮单击WM_LButtonUp,然后再单击“Add Handler”按钮4.在CDrawView类中添加一个私有变量: Int x;/表示线形,x=0表示实线,x=1表示虚线 并初始化对象x=0;5.双击menu文件夹中I

4、DR_MAINFRAME项就可以在在menu中添加菜单栏线形,在子菜单中分别建立实线,虚线(同上),通过建立类向导在CDrawView类分别加入两个功能函数Onshixian(),Onxuxian()void CDrawView:Onshixian() / TODO: Add your command handler code here x=0;void CDrawView:Onxuxian() / TODO: Add your command handler code herex=1;5在构造函数中,即CDrawView:CDrawView()中加代码:CDrawView:CDrawView

5、()/ TODO: add construction code herep1=p2=-1; /初始化成-1,表示未点下鼠标左键6在OnLButtonDown中添加代码void CDrawView:OnLButtonDown(UINT nFlags, CPoint point) / TODO: Add your message handler code here and/or call defaultp1=p2=point;CView:OnLButtonDown(nFlags, point);7. void CDrawView:OnLButtonUp(UINT nFlags, CPoint po

6、int) / TODO: Add your message handler code here and/or call default CClientDC dc(this); /创建画图对象dc dc.SetROP2(R2_NOTXORPEN); /设置画线方式 dc.MoveTo(p1); dc.LineTo(p2); /画线,消去鼠标移动事件画的线 p2=point; CPen pen; /定义画笔对象 pen.CreatePen(x,1,RGB(0,0,255); /创建画笔为实线,线宽为1个像素兰颜色画笔 CPen *oldpen=(CPen *)dc.SelectObject(pen

7、); dc.MoveTo(p1); dc.LineTo(p2); /画线 dc.SelectObject(pen); /恢复原来的画笔 p1.x=-1;8. 在OnMouseMove中添加代码void CDrawView:OnMouseMove(UINT nFlags, CPoint point) / TODO: Add your message handler code here and/or call default if(p1.x0) CClientDC dc(this); dc.SetROP2(R2_NOTXORPEN); /设置画线方式 dc.MoveTo(p1); dc.LineT

8、o(p2); /画线,消去前一次鼠标移画的线 p2=point; /记录下新点 dc.MoveTo(p1); dc.LineTo(p2); /画线 3.2选择线宽功能的设计1.在CDrawView类中添加一个私有变量:Int y;/表示线的宽度并初始化y=1;2双击menu文件夹中IDR_MAINFRAME项就可以在在menu中添加菜单栏线宽,在子菜单中分别建立线宽1,3,5通过建立类向导在CDrawView类分别加入两个功能函数On1(),On3(),On5()void CDrawView:On1() / TODO: Add your command handler code here y=

9、1;void CDrawView:On3() / TODO: Add your command handler code here y=3;void CDrawView:On5() / TODO: Add your command handler code here y=5;3.在void CDrawView:OnLButtonUp(UINT nFlags, CPoint point)中pen.CreatePen(x,1,RGB(0,0,O)中1用y来代替3.3.选择颜色功能的设计1. 在CDrawView类中添加一个私有变量:COLORREF color;/表示颜色并初始化color=RGB

10、(0,0,0);/黑色2. 双击menu文件夹中IDR_MAINFRAME项就可以在在menu中添加菜单栏颜色,在子菜单中建立选择颜色,通过建立类向导在CDrawView类中添加Oncolor()函数void CDrawView:Oncolor() / TODO: Add your command handler code here CColorDialog dig; dig.DoModal(); color=dig.GetColor();3. 在void CDrawView:OnLButtonUp(UINT nFlags, CPoint point)中pen.CreatePen(x,1,RG

11、B(0,0,O)中RGB(0,0,0)用变量color来代替代3.3选择图形功能的设计1. 在CDrawView类中添加一个私有变量:Int shape;/shape=0表示线,shape=1表示椭圆,shape=2表示矩形,shape=3表示圆,shape=4表示画笔并初始化shape=0;2建立以个SHAPE类struct SHAPE CPoint p1,p2; int shape; int width; int penstyle; int r; COLORREF color; COLORREF c; SHAPE *next; int da;同时在CDrawView中定义变量:int wi

12、dth; int penstyle; int da;2. 双击menu文件夹中IDR_MAINFRAME项就可以在在menu中添加菜单栏图形,在子菜单中建立椭圆,矩形,圆,画笔,通过建立类向导在CDrawView类中添加Online(),Ontuoyuan(),Onrectangle(),Oncircle(),Onpen()函数void CDrawView:Online() / TODO: Add your command handler code here shape=0;void CDrawView:Ontuoyuan() / TODO: Add your command handler

13、code here shape=1;void CDrawView:Onrectangle() / TODO: Add your command handler code here shape=2;void CDrawView:circle() / TODO: Add your command handler code here shape=3;void CDrawView:Onpen() / TODO: Add your command handler code here shape=4;3.在OnLButtonUp()函数中添加代码CClientDC dc(this); /创建画图对象 dc

14、.SetROP2(R2_NOTXORPEN); /设置画线方式CPen pen; /定义画笔对象pen.CreatePen(x,y,color); /创建画笔dc.SelectObject(pen);if(shape=0)dc.MoveTo(p1); dc.LineTo(p2); /画线,消去鼠标移动事件画的线 p2=point; dc.SetROP2(R2_COPYPEN); /设置画线方式 dc.MoveTo(p1); dc.LineTo(p2); /画线 CView:OnLButtonUp(nFlags, point);if(shape=1) HBRUSH hb=(HBRUSH)GetS

15、tockObject(NULL_BRUSH); CBrush *brush=CBrush:FromHandle(hb); CBrush *pOldBrush = dc.SelectObject(brush); dc.Ellipse(p1.x,p1.y,p2.x,p2.y); p2=point; dc.SetROP2(R2_COPYPEN); /设置画线方式 dc.Ellipse(p1.x,p1.y,p2.x,p2.y); CView:OnLButtonUp(nFlags, point); if(shape=2) HBRUSH hb=(HBRUSH)GetStockObject(NULL_BRU

16、SH); CBrush *brush=CBrush:FromHandle(hb); CBrush *pOldBrush = dc.SelectObject(brush);dc.Rectangle(p1.x,p1.y,p2.x,p2.y); p2=point; dc.SetROP2(R2_COPYPEN); /设置画线方式 dc.Rectangle(p1.x,p1.y,p2.x,p2.y); CView:OnLButtonUp(nFlags, point); if(shape=3) HBRUSH hb=(HBRUSH)GetStockObject(NULL_BRUSH); CBrush *bru

17、sh=CBrush:FromHandle(hb); CBrush *pOldBrush = dc.SelectObject(brush);dc.Ellipse(p1.x-r,p1.y-r,p1.x+r,p1.y+r);dc.SetROP2(R2_COPYPEN); /设置画线方式 dc.Ellipse(p1.x-r,p1.y-r,p1.x+r,p1.y+r); if(shape=4) HBRUSH hb=(HBRUSH)GetStockObject(NULL_BRUSH); CBrush *brush=CBrush:FromHandle(hb); CBrush *pOldBrush = dc.

18、SelectObject(brush);dc.MoveTo(p1); dc.LineTo(point);p1=point; dc.MoveTo(p1); dc.LineTo(point); p2=point;SHAPE *pTemp;pTemp=new SHAPE;pTemp-p1=p1; pTemp-p2=p2;pTemp-penstyle=penstyle;pTemp-shape=shape;pTemp-width=width;pTemp-r=r;pTemp-color=color;pTemp-next=head;head=pTemp;p1.x=-1;4.在OnMouseMove()函数中

19、添加代码CClientDC dc(this);dc.SetROP2(R2_NOTXORPEN); /设置画线方式CPen pen; /定义画笔对象pen.CreatePen(x,y,color); /创建画笔为实线,线宽为1个像素兰颜色画笔dc.SelectObject(pen);if(p1.x0)if(shape=0)dc.MoveTo(p1); dc.LineTo(p2); /画线,消去前一次鼠标移动事件画线p2=point; /记录下新点dc.SetROP2(R2_COPYPEN); /设置画线方式dc.MoveTo(p1); dc.LineTo(p2);/画线if(shape=1)HB

20、RUSH hb=(HBRUSH)GetStockObject(NULL_BRUSH);CBrush *brush=CBrush:FromHandle(hb);CBrush *pOldBrush = dc.SelectObject(brush);dc.Ellipse(p1.x,p1.y,p2.x,p2.y);p2=point;dc.SetROP2(R2_COPYPEN); /设置画线方式dc.Ellipse(p1.x,p1.y,p2.x,p2.y);if(shape=2)HBRUSH hb=(HBRUSH)GetStockObject(NULL_BRUSH);CBrush *brush=CBru

21、sh:FromHandle(hb);CBrush *pOldBrush = dc.SelectObject(brush);dc.Rectangle(p1.x,p1.y,p2.x,p2.y);p2=point; /记录下新点dc.SetROP2(R2_COPYPEN); /设置画线方式dc.Rectangle(p1.x,p1.y,p2.x,p2.y);if(shape=3)HBRUSH hb=(HBRUSH)GetStockObject(NULL_BRUSH);CBrush *brush=CBrush:FromHandle(hb);CBrush *pOldBrush = dc.SelectObj

22、ect(brush);r=(int)sqrt(p1.x-point.x)*(p1.x-point.x)+(p1.y-point.y)*(p1.y-point.y);dc.Ellipse(p1.x-r,p1.y-r,p1.x+r,p1.y+r);dc.Ellipse(p1.x-r,p1.y-r,p1.x+r,p1.y+r);if(shape=4)HBRUSH hb=(HBRUSH)GetStockObject(NULL_BRUSH);CBrush *brush=CBrush:FromHandle(hb);CBrush *pOldBrush = dc.SelectObject(brush);dc.

23、MoveTo(p1); dc.LineTo(point);p1=point;dc.MoveTo(p1); dc.LineTo(point);3.4画刷功能的设计1.令shape=5表示选择画刷2.双击menu文件夹中IDR_MAINFRAME项就可以在在menu中添加菜单栏画刷,在子菜单中建立填充栏,通过建立类向导在CDrawView类中添加Onhuashua()函数void CDrawView:Onhuashua() shape=5; CColorDialog dig; dig.DoModal(); f=dig.GetColor();3.在OnLButtonDown()函数中添加代码p1=p

24、2=point; CView:OnLButtonDown(nFlags, point); if(shape=4) CClientDC dc(this); CBrush brush; CBrush *old_Brush; brush.CreateSolidBrush(f); old_Brush=dc.SelectObject(&brush); dc.FloodFill(p1.x,p1.y,c); dc.SetROP2(R2_COPYPEN); 3.5 最小化窗口问题的改善在OnDraw()函数中添加代码void CDrawView:OnDraw(CDC* pDC) CDrawDoc* pDoc=

25、GetDocument(); ASSERT_VALID(pDoc);CPen pen; /定义画笔对象 pen.CreatePen(pTemp-penstyle,pTemp-width,pTemp-color); /创建画笔为实线,线宽为1个像素兰颜色画笔 dc.SelectObject(pen);SHAPE *pTempWhile(head!=NULL)if(shape=0) HBRUSH hb=(HBRUSH)GetStockObject(NULL_BRUSH); CBrush *brush=CBrush:FromHandle(hb); CBrush *pOldBrush = dc.Sel

26、ectObject(brush);dc.MoveTo(pTemp-p1); dc.LineTo(pTemp-p2); /画线,消去鼠标移动事件画线 dc.MoveTo(p1); dc.LineTo(p2); /画线CView:OnLButtonUp(nFlags, point); if(shape=1) HBRUSH hb=(HBRUSH)GetStockObject(NULL_BRUSH); CBrush *brush=CBrush:FromHandle(hb); CBrush *pOldBrush = dc.SelectObject(brush); dc.Ellipse(pTemp-p1.

27、x,pTemp-p1.y,pTemp-p2.x,pTemp-p2.y); p2=point; dc.SetROP2(R2_COPYPEN); /设置画线方式 dc.Ellipse(p1.x,p1.y,p2.x,p2.y);dc.Ellipse(p1.x,p1.y,p2.x,p2.y); CView:OnLButtonUp(nFlags, point); if(shape=2) HBRUSH hb=(HBRUSH)GetStockObject(NULL_BRUSH); CBrush *brush=CBrush:FromHandle(hb); CBrush *pOldBrush = dc.Sele

28、ctObject(brush);dc.Rectangle(pTemp-p1.x,pTemp-p1.y,pTemp-p2.x,pTemp-p2.y); p2=point; dc.SetROP2(R2_COPYPEN); /设置画线方式 dc.Rectangle(pTemp-p1.x,pTemp-p1.y,pTemp-p2.x,pTemp-p2.y);dc.Rectangle(pTemp-p1.x,pTemp-p1.y,pTemp-p2.x,pTemp-p2.y); CView:OnLButtonUp(nFlags, point); if(shape=3) HBRUSH hb=(HBRUSH)Ge

29、tStockObject(NULL_BRUSH); CBrush *brush=CBrush:FromHandle(hb); CBrush *pOldBrush = dc.SelectObject(brush); dc.Ellipse(pTemp-p1.x-r,pTemp-p1.y-r,pTemp-p1.x+r,pTemp-p1.y+r);dc.SetROP2(R2_COPYPEN); /设置画线方式 dc.Ellipse(pTemp-p1.x-r,pTemp-p1.y-r,pTemp-p1.x+r,pTemp-p1.y+r); if(shape=4) HBRUSH hb=(HBRUSH)GetStockObject(NULL_BRUSH); CBrush *brush=CBrush:FromHandle(hb); CBrush *pOldBrush = dc.SelectObject(brush);dc.MoveTo(pTemp-p1); dc.LineTo(pTemp-po

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1