已阅读5页,还剩8页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
图形的保存和重绘,武汉科锐,一般CDC画图中出现的问题,画图的过程中每次改变应用程序窗口大小时会出发现起用DC画的图形全没了。原因:每当应用程序窗体有变化的时候,应用程序的界面将会被重新绘制。绘制界面Windows会向应用程序发出WM_PAINT消息。在MFC中可以响应WMPAINT消息,MFC中的OnPaint和OnDraw函数,在MFC中有两个函数OnPaint和OnDraw,OnPaint是响应WM_PAINT消息的消息响应函数。OnDraw是虚函数留给子类的接口,是在父类的OnPaint函数里调用的。但是如果子类响应了WM_PAINT消息之后即实现了OnPaint函数,当程序界面重绘时只会调用子类的OnPaint,OnDraw不会被调用。(除非在子类OnPaint方法里显式的调用父类的OnPaint方法),CPaintDC和CClientDC,CpaintDC的构造函数中调用了BeginPaint(),析构函数中调用了EndPaint();CclietnDC的构造函数中调用了GetDC(),析构函数中调用了ReleaseDC()。而BeginPaint(),EndPaint()只能用于响应WM-PAINT消息,否则将会出错。,静态图形,静态图形直接在OnPaint或OnDraw函数里绘制即可。,动态图形,可将鼠标绘制的图形信息记录到动态的数组中。比如记到链表中。然后响应WM_PAINT消息根据动态数组中的信息给出图形来。,定义结构体LINE,用于保存线的数据。structLINECPointm_pt1;CPointm_pt2;在View中定义一个动态数组,保存每一根线的指针。CPtrArraym_ptrLines;定义两个Cpoint的成员变量,保存线的起点和终点:CPointm_ptOld;CPointm_ptNew;在View中加入WM_LBUTTONDOWN,WM_LBUTTONUP的响应函数,在OnLButtonDown中为m_ptNew赋值,m_ptOld=point;在OnLButtonUp中加入代码:m_ptNew=point;CClientDCdc(this);dc.MoveTo(m_ptOld);dc.LineTo(point);LINE*pLn=newLINE;pLn-m_pt1=m_ptOld;pLn-m_pt2=m_ptNew;m_ptrLines.Add(pLn);,在OnDraw()中加入:intsum=m_ptrLines.GetSize();for(inti=0;iMoveTo(Line*)m_ptrLines.GetAt(i)-m_pt1);pDC-LineTo(Line*)m_ptrLines.GetAt(i)-m_pt2);加入滚动条:将View的cpp文件和h文件中的CView全部替换成CScrollView。在view中加入虚函数OnInitialUpdate(),这个函数在View第一次刷新前被调用,在其中加入代码:SetScrollSizes(MM_TEXT,CSize(1024,768);这个函数也可在View的构造函数中调用。在OnLButtonUp中生成DC后加入:OnPrepareDC(,利用CmetaFileDC,classCMetaFileDC:publicCDC在View中定义成员变量:CMetaFileDCm_dcMetaFile;在View的OnCreate中加入代码:m_dcMetaFile.Create();在View的OnLButtonUp中,注释有关数组的代码,加入:m_dcMetaFile.MoveTo(m_ptOld);m_dcMetaFile.LineTo(m_ptNew);在OnDraw()中HMETAFILEhmetafile;hmetafile=m_dcMetaFile.Close();pDC-PlayMetaFile(hmetafile);m_dcMetaFile.Create();m_dcMetaFile.PlayMetaFile(hmetafile);:DeleteMetaFile(hmetafile);,利用CmetaFileDC,保存文件:加入菜单响应函数,OnFileSave,加入代码:HMETAFILEhmetafile;hmetafile=m_dcMetaFile.Close();:CopyMetaFile(hmetafile,c:2.ddd);m_dcMetaFile.Create();m_dcMetaFile.PlayMetaFile(hmetafile);:DeleteMetaFile(hmetafile);读出文件:加入菜单响应函数,OnFileLoad,加入代码:HMETAFILEhmetafile;hmetafile=:GetMetaFile(c:2.ddd);m_dcMetaFile.PlayMetaFile(hmetafile);:DeleteMetaFile(hmetafile);Invalidate();,利用兼容DC重绘,HDCCreateCompatibleDC(HDChdc/handletoDC);/创建兼容DCBOOLBitBlt(HDChdcDest,/handletodestinationDCintnXDest,/x-coordofdestinationupper-leftcornerintnYDest,/y-coordofdestinationupper-leftcornerintnWidth,/widthofdestinationrectangleintnHeight,/heightofdestinationrectangleHDChdcSrc,/handletosourceDCintnXSrc,/x-coordinateofsourceupper-leftcornerintnYSrc,/y-coordinateofsourceupper-leftcornerDWORDdwRop/rasteroperationcode);,利用兼容DC重绘,在View中定义成员变量:CDCm_dcCompa;在OnLButtonDown中加入代码:CClientDCdc(this);if(!m_dcCompa.m_hDC)m_dcCompa.CreateCompatibleDC(,位图的显示,创建位图:
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 商丘师范学院《湖湘民俗文化》2024-2025学年第一学期期末试卷
- 上海东海职业技术学院《酒店设计》2024-2025学年第一学期期末试卷
- 智能家居市场未来趋势预测
- 大学生职业生涯规划与就业创业指导教学教案
- 荒漠化防治毕业论文题目(818个)
- 2026届甘肃省武威市天祝藏族自治县第一中学高三上学期摸底考试(三)历史试题(含答案)
- 公司管理期间费用控制论文
- ERP系统的主要作用、内容与功能
- 行业现状的分析与整改建议
- 英语专业本科论文写作选题方向及其可行性研究
- 2025年武汉市蔡甸区总工会公开招聘工会协理员4人考试笔试模拟试题及答案解析
- 人民武装部办公室人员培训计划
- 电路测试服务合同范本
- DL-T5191-2004风力发电场项目建设工程验收规程
- 《故都的秋》《荷塘月色》联读课件15张-统编版高中语文必修上册
- 2023年中国中煤能源集团有限公司校园招聘笔试题库及答案解析
- 三字经讲义课件
- 部编版小学道德与法治五年级上册好山好水好风光讲课(教学课件)
- 电梯扶梯易损件清单
- 民事权利体系图示
- 登高车安全安全操作规程
评论
0/150
提交评论