MFC图形编程实验_第1页
MFC图形编程实验_第2页
MFC图形编程实验_第3页
MFC图形编程实验_第4页
MFC图形编程实验_第5页
已阅读5页,还剩9页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、测绘编程技术程序设计报告书设计题目: MFC图形编程实验 学 号: 姓 名: 指导老师: 日 期: 目 录一、需求分析11.1 设计目的11.2 设计内容11.2.1 性能需求11.2.2 功能需求11.3环境需求1二、详细设计12.1 MFC图形编程原理12.2 MFC图形编程功能模块流程图12.3 MFC图形编程类图设计22.4 MFC图形编程类实现代码32.5 MFC图形编程类调用方法6三、界面设计63.1 界面类型选择63.2 界面元素组织63.3 界面与类的交互6四、测试说明74.1 测试数据74.2 测试结果7五、结论8附录A MFC图形编程代码(可附完整的功能类代码)8参考文献:

2、(例)12一、需求分析1.1 设计目的(1)能够掌握指定格式文本文件的读取与存储(格式文件读取和数值的存储)(2)能正确理解计算机屏幕坐标的定义,并能够顺利完成控制点 实测坐标到屏幕坐标的双向转换。(3)能利用 GDIGDI 基本函数,完成控制点在计算机屏幕上的绘显示。1.2 设计内容1.2.1 性能需求有Microsoft Visual Studio 2010及其以上版本;1.2.2 功能需求能完成COR文件的读取和显示1.3环境需求操作系统为:Microsoft Windows win7; Microsoft Visual Studio 2010;二、详细设计2.1 MFC图形编程原理Wi

3、ndows提供了图形设备接口(简称GDI)来实现绘图的功能。GDI提供了一组预定义的GDI对象,如画笔、画刷等,让用户可以在任何设备上绘图。2.2 MFC图形编程功能模块流程图图8-12.3 MFC图形编程类图设计图8-2图8-3图8-42.4 MFC图形编程类实现代码class Ctxbc01Doc : public CDocumentprotected: / 仅从序列化创建Ctxbc01Doc();DECLARE_DYNCREATE(Ctxbc01Doc)/ 特性public:/ 操作public:/ 重写public:virtual BOOL OnNewDocument();virtua

4、l void Serialize(CArchive& ar);#ifdef SHARED_HANDLERSvirtual void InitializeSearchContent();virtual void OnDrawThumbnail(CDC& dc, LPRECT lprcBounds);#endif / SHARED_HANDLERS/ 实现public:virtual Ctxbc01Doc();#ifdef _DEBUGvirtual void AssertValid() const;virtual void Dump(CDumpContext& dc) const;#endifp

5、rotected:/ 生成的消息映射函数protected:DECLARE_MESSAGE_MAP()#ifdef SHARED_HANDLERS/ 用于为搜索处理程序设置搜索内容的 Helper 函数void SetSearchContent(const CString& value);#endif / SHARED_HANDLERS;class Ctxbc01View : public CViewprotected: / 仅从序列化创建Ctxbc01View();DECLARE_DYNCREATE(Ctxbc01View)/ 特性public:Ctxbc01Doc* GetDocument

6、() const;/*double ScreenHeight;double ScreenWidth;*/ 操作public:/ 重写public:virtual void OnDraw(CDC* pDC); / 重写以绘制该视图virtual BOOL PreCreateWindow(CREATESTRUCT& cs);protected:virtual BOOL OnPreparePrinting(CPrintInfo* pInfo);virtual void OnBeginPrinting(CDC* pDC, CPrintInfo* pInfo);virtual void OnEndPri

7、nting(CDC* pDC, CPrintInfo* pInfo);/ 实现public:virtual Ctxbc01View(); #ifdef _DEBUGvirtual void AssertValid() const;virtual void Dump(CDumpContext& dc) const;#endifprotected:/ 生成的消息映射函数protected:afx_msg void OnFilePrintPreview();afx_msg void OnRButtonUp(UINT nFlags, CPoint point);afx_msg void OnConte

8、xtMenu(CWnd* pWnd, CPoint point);DECLARE_MESSAGE_MAP()public:afx_msg void On32771();class CMainFrame : public CFrameWndExprotected: / 仅从序列化创建CMainFrame();DECLARE_DYNCREATE(CMainFrame)/ 特性public:/ 操作public:/ 重写public:virtual BOOL PreCreateWindow(CREATESTRUCT& cs);virtual BOOL LoadFrame(UINT nIDResour

9、ce, DWORD dwDefaultStyle = WS_OVERLAPPEDWINDOW | FWS_ADDTOTITLE, CWnd* pParentWnd = NULL, CCreateContext* pContext = NULL);/ 实现public:virtual CMainFrame();#ifdef _DEBUGvirtual void AssertValid() const;virtual void Dump(CDumpContext& dc) const;#endifprotected: / 控件条嵌入成员CMFCMenuBar m_wndMenuBar;CMFCTo

10、olBar m_wndToolBar;CMFCStatusBar m_wndStatusBar;CMFCToolBarImages m_UserImages;/ 生成的消息映射函数protected:afx_msg int OnCreate(LPCREATESTRUCT lpCreateStruct);afx_msg void OnViewCustomize();afx_msg LRESULT OnToolbarCreateNew(WPARAM wp, LPARAM lp);DECLARE_MESSAGE_MAP();2.5 MFC图形编程类调用方法CDC类是MFC设备环境类的基类三、界面设计

11、3.1 界面类型选择标准MFC单文档界面 3.2 界面元素组织文件读取菜单项3.3 界面与类的交互四、测试说明4.1 测试数据老师提供的MFC图形编程实验配套坐标文件(COR)图8-54.2 测试结果图8-6五、结论附录A MFC图形编程代码(可附完整的功能类代码)/字符串分割函数CString* SplitString(CString str , char split, int iSubStrs)int iPos = 0; /分割符位置 int iNums = 0; /分割符的总数 CString strTemp = str; CString strRight; /先计算子字符串的数量 wh

12、ile (iPos != -1) iPos = strTemp.Find(split); if (iPos = -1) break; strRight = strTemp.Mid(iPos + 1, str.GetLength(); strTemp = strRight; iNums+; if (iNums = 0) /没有找到分割符 /子字符串数就是字符串本身 iSubStrs = 1; return NULL; /子字符串数组 iSubStrs = iNums + 1; /子串的数量 = 分割符数量 + 1 CString* pStrSplit;CString S10;/ pStrSpli

13、t = new CStringiSubStrs; strTemp = str; CString strLeft; for (int i = 0; i iNums; i+) iPos = strTemp.Find(split); /左子串 strLeft = strTemp.Left(iPos); /右子串 strRight = strTemp.Mid(iPos + 1, strTemp.GetLength(); strTemp = strRight; pStrSpliti = strLeft; pStrSplitiNums = strTemp;int k=0; for (int i = 0;

14、i =iNums; i+)/ if(pStrSpliti!=) Sk=pStrSpliti;k+; for (int i=0; i Delete(); /计算坐标转换比例因子void CalcScreenRealScale()if (m_RealMaxX - m_RealMinX != 0) & (m_RealMaxY - m_RealMinY != 0) m_scaleX = fabs(m_RealMaxX - m_RealMinX) / ScreenHeight); m_scaleY = fabs(m_RealMaxY - m_RealMinY) / ScreenWidth); m_sca

15、le = max(m_scaleX, m_scaleY); else if (m_RealMaxX - m_RealMinX != 0) m_scale = fabs(m_RealMaxX - m_RealMinX) / ScreenHeight); else if (m_RealMaxY - m_RealMinY != 0) m_scale = fabs(m_RealMaxY - m_RealMinY) / ScreenWidth); else m_scale = 1; /计算屏幕坐标double CalcXYFromReal(double dscale, double dx, double dy,int t) double screenx = (dy -(m_RealMinY-00) / dscale; double screeny = ScreenHeight - (dx -(m_RealMinX-00) / dscale; if(t=1) return int(screenx); else return int(screeny);void Ctxbc01View:OnDraw(CDC* pDC)Ctxbc01Doc* pDoc = Get

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论