



全文预览已结束
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
实现图形的重绘在所给代码的基础上实现图形的重绘(窗口大小改变后所绘制图形不丢失)。1、修改stdafx.h删除 #include 增加#include #include #include 2、修改项目属性将 【配置属性】-【常规】-【MFC的使用】修改为 在共享的DLL中使用MFC3、修改FirstWnd.h增加以下代码:typedef struct tagDrawLinePOINT ptStart;POINT ptEnd;DRAWLINE,*PDRAWLINE;typedef struct tagDrawRectRECT rect;DRAWRECT,*PDRAWRECT;typedef enum tagSHAPESHAPELINE,SHAPERECT,SHAPEELLIPSESHAPE;typedef struct tagDrawShapeSHAPE shape;UINT penWidth;DWORD color;BOOL bFill;unionDRAWLINE ShapeLine;DRAWRECT ShapeRect;DRAWSHAPE,*PDRAWSHAPE;4、修改firstWnd.cpp中 DrawStru的定义,增加CArray graphicArray;这一句,修改后的代码为typedef struct tagDrawStruenum DrawTool shape;BOOL bMouseDown;BOOL bFill;int xBegin,yBegin ,x,y;COLORREF color;HPEN hPen;HBRUSH hBr;int lineWidth;CArray graphicArray; DRAWSTRU ,*PDRAWSTRU;5、修改void LineMouseUp函数在函数的最后增加以下代码DRAWSHAPE myShape;myShape.shape=SHAPELINE;myShape.bFill=dr.bFill;myShape.color=dr.color;myShape.penWidth=1;myShape.ShapeLine.ptStart.x=dr.xBegin;myShape.ShapeLine.ptStart.y=dr.yBegin;myShape.ShapeLine.ptEnd.x=dr.x;myShape.ShapeLine.ptEnd.y=dr.y;dr.graphicArray.Add(myShape);6、修改void EllipseMouseUp函数在函数的最后增加以下代码DRAWSHAPE myShape;myShape.shape=SHAPEELLIPSE;myShape.bFill=dr.bFill;myShape.color=dr.color;myShape.penWidth=1;myShape.ShapeRect.rect.left=dr.xBegin;myShape.ShapeRect.rect.top=dr.yBegin;myShape.ShapeRect.rect.right=dr.x;myShape.ShapeRect.rect.bottom=dr.y;dr.graphicArray.Add(myShape);7、修改void RectMouseUp函数参考6的代码8、修改WM_PAINT处理代码在窗口函数的开始部分增加以下定义:HPEN hPen,hOldPen;HBRUSH hBr,hOldBr;在/Todo后面增加以下代码int i;DRAWSHAPE myShape;for(i=0;idr.graphicArray.GetSize();i+)myShape=dr.graphicArrayi;hPen=CreatePen(PS_SOLID,myShape.penWidth,myShape.color);if(myShape.bFill)hBr=CreateSolidBrush(myShape.color);elsehBr=(HBRUSH)GetStockObject(NULL_BRUSH);hOldPen=(HPEN)SelectObject(hdc,hPen);hOldBr=(HBRUSH)SelectObject(hdc,hBr);switch(myShape.shape)case SHAPELINE:MoveToEx(hdc,myShape.ShapeLine.ptStart.x,myShape.ShapeLine.ptStart.y,NULL);LineTo(hdc,myShape.ShapeLine.ptEnd.x,myShape.ShapeLine.ptEnd.y);break;case SHAPEELLIPSE:Ellipse(hdc,myShape.ShapeRect.rect.left,myShape.ShapeRect.rect.top,myShape.ShapeRect.rect.right,myShape.ShapeRect.rect.bottom);break;case SHAPERECT:Rectangle(hdc,myShape.ShapeRect.rect.left,myShape.ShapeRect.rect.top,myShape.ShapeRect.rect.right,myShape.ShapeRect.rect.bottom);break;SelectObject(hdc,hOldPen);DeleteObject(hPen);if(myShape.bFill)SelectObject(hdc,hOldBr);DeleteObject(hBr);9、在菜单资源中增加菜单项在【File】菜单下增加【打开】菜单 Caption 为打开(&O),ID为 IDM_FILE_OPEN【保存】菜单 Caption 为保存(&S),ID为 IDM_FILE_SAVE10、在窗口函数中增加菜单处理代码如下:case IDM_FILE_SAVE:CFile file(TEXT(.g.dat),CFile:modeCreate|CFile:modeWrite);CArchive ar(&file,CArchive:store);dr.graphicArray.Serialize(ar);break;case IDM_FILE_OPEN:CFile file(TEXT(.g.dat),
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 宁德市初三二模数学试卷
- 南平市属校学科教师招聘考试真题2024
- 萍乡市初三二模数学试卷
- 去年曲阜中考数学试卷
- 七下典中点数学试卷
- 珠海市香洲区招聘公办中小学教师考试真题2024
- 聊城科技职业学院招聘考试真题2024
- 河北省胸科医院招聘考试真题2024
- 钱学森考试数学试卷
- 红色经典课件
- 2024超药品说明书用药目录-2024广东省药学会20240613
- DB21T 2655-2016 花生节本增效栽培技术规程
- 2024北京东城区高三(上)期末生物试题和答案
- 重庆第二师范学院《基础乐理与视唱》2022-2023学年第一学期期末试卷
- 网约车司机安全培训
- 数据安全风险评估报告
- 细胞学科普讲座模板
- 1云南省建设工程施工图设计文件审查工作流程
- 混凝土劳务加工合同模板
- 大气污染治理技术实施方案
- 吊篮作业人员安全技术交底
评论
0/150
提交评论