77范文网 - 专业文章范例文档资料分享平台

MFC绘图版 软件说明书(3)

来源:网络收集 时间:2019-02-21 下载这篇文档 手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:或QQ: 处理(尽可能给您提供完整文档),感谢您的支持与谅解。点击这里给我发消息

广西工学院课程设计用纸

m_newToolBar.EnableDocking(CBRS_ALIGN_ANY); EnableDocking(CBRS_ALIGN_ANY); DockControlBar(&m_newToolBar);

在CMFCDoc中添加的代码 CMFCDoc.h中 public: virtual ~CMFCDoc(); CPen m_penCur; // pen created according to CTypedPtrList m_strokeList; UINT m_nPenWidth; // current user-selected pen width COLORREF m_color; //颜色? CPen* GetCurrentPen(); CStroke* NewStroke(); void InitDocument(); //初始化任意曲线的画笔 void DeleteContents();//删除任意曲线 BOOL OnOpenDocument(LPCTSTR lpszPathName); CMFCDoc.cpp中

CStroke* CMFCDoc::NewStroke() {//D??¨newStrokeoˉêy POSITION pos = GetFirstViewPosition(); CMFCView *pView = (CMFCView*)GetNextView(pos); //获取视类的指针 //获取视类的画笔宽度和颜色 m_nPenWidth = pView->m_nLineWidth; m_color = pView->m_color; CStroke* pStrokeItem = new CStroke(m_nPenWidth,m_color); m_strokeList.AddTail(pStrokeItem); SetModifiedFlag(); // Mark the document as having been modified, for // purposes of confirming File Close. return pStrokeItem; }

BOOL CMFCDoc::OnNewDocument() {/新建空白文档 if (!CDocument::OnNewDocument()) return FALSE;

第 页 共 页

广西工学院课程设计用纸

// TODO: add reinitialization code here // (SDI documents will reuse this document) /新建空白文档就是把当前的数据全部删除掉 POSITION pos = GetFirstViewPosition(); CMFCView *pView = (CMFCView*)GetNextView(pos); int max = pView->m_graph.GetSize(); for(int i=0;im_graph.RemoveAt(max-i-1); } return TRUE; }

///////////////////////////////////////////////////////////////////////////// // CMFCDoc serialization

void CMFCDoc::Serialize(CArchive& ar) {//获取视类的指针 POSITION pos = GetFirstViewPosition(); CMFCView *pView = (CMFCView*)GetNextView(pos); if (ar.IsStoring()) { // TODO: add storing code here } else { // TODO: add loading code here } m_strokeList.Serialize(ar); pView->m_graph.Serialize(ar); }

///////////////////////////////////////////////////////////////////////////// void CMFCDoc::InitDocument() {//初始化画笔和颜色 m_nPenWidth = 0; // default 2 pixel pen width m_color = RGB(0,0,0); m_penCur.CreatePen(PS_SOLID, m_nPenWidth, m_color); }

第 页 共 页

广西工学院课程设计用纸

void CMFCDoc::DeleteContents() {//删除保存了任意曲线的数据结构1 while (!m_strokeList.IsEmpty()) { delete m_strokeList.RemoveHead(); } CDocument::DeleteContents(); }

BOOL CMFCDoc::OnOpenDocument(LPCTSTR lpszPathName) {//打开一个新的文档 if (!CDocument::OnOpenDocument(lpszPathName)) return FALSE; return TRUE; }

CPen* CMFCDoc::GetCurrentPen() {//返回画笔 return &m_penCur; }

CMFCView类的代码 class CMFCView : public CView

{ CMFCView中添加的变量 public: DWORD m_DrawIndex; // 当前所选绘画类型的索引 CPoint m_random_start; // 任意曲线起点坐标 BOOL m_bDraw; //判断左键是否按下 CPoint m_start; //起点 CPoint m_end; //终点 CObArray m_graph; //保存图形 为了重绘 和保存 文件中去 COLORREF m_color; //保存画笔颜色 CFont m_font; //保存字体 CString m_strFontName; //保存字体名称 UINT m_nLineWidth; //保存线宽 int m_nLineStyle; //保存线形状 //--------------′打开文本文件使用的变量-------// BOOL m_txt; //点击′打开文本文件的标记 char *pBuf; //文本文件的中信息保存 //-------------′打开bmp图像文件用的一些变量----// BOOL m_bmp; //′打开位图文件的标记 BITMAPINFO * pBmpInfo; // BITMAPINFO结构指针

第 页 共 页

广西工学院课程设计用纸

BYTE* pBmpData; //DIB图像数据指针 BITMAPFILEHEADER BmpHeader; //位图文件头 BITMAPINFOHEADER BmpInfo; //位图信息 DWORD dataBytes; CStroke* m_pStrokeCur; // the stroke in progress CPoint m_ptPrev; // the last mouse pt in the stroke in progress

// Operations

CMFCView中添加的函数(包括消息响应函数)

public: float GetDistance(CPoint start, CPoint end);//获得两点坐标的距离的函数 void DrawArrowLine(CPoint start,CPoint end);//画带箭头线的函数 void DrawLine(CPoint start,CPoint end); /画直线函数 void DrawEllipse(CPoint start,CPoint end); /画椭圆函数 void DrawCircle(CPoint start,CPoint& end); //画圆函数 void DrawRect(CPoint start,CPoint end); //画长方形函数

protected:

// Generated message map functions

protected: 消息响应函数 //{{AFX_MSG(CMFCView) afx_msg void OnLButtonDown(UINT nFlags, CPoint point); //鼠标左键按下消息响应函数 afx_msg void OnLButtonUp(UINT nFlags, CPoint point); //鼠标左键弹起消息响应函数 afx_msg void OnMouseMove(UINT nFlags, CPoint point); //鼠标移动消息响应函数 afx_msg void OnRButtonDown(UINT nFlags, CPoint point); //鼠标右键按下消息响应函数 afx_msg void OnDrawChange(WORD nID); //选择绘画类型索引 afx_msg void OnUpdateOperDrawChange(CCmdUI * pCmdUI); afx_msg void OnEditUndo(); //点击 撤消 消息响应函数 afx_msg void OnClear(); //点击 清空 消息响应函数 afx_msg void OnSetLineStyleWidth(); //点击 设置线宽线型 消息响应函数 afx_msg void OnSetFont(); //点击 设置字体 消息响应函数 afx_msg void OnSetColor(); //点击 设置颜色 消息响应函数 afx_msg void OnOpenTxt(); //点击 打开文本文件 消息响应函数 afx_msg void OnOpenBmp(); //点击 打开bmp图像文件 消息响应函数 afx_msg void OnOpenWav(); //点击 打开wav音频文件 消息响应函数 //}}AFX_MSG DECLARE_MESSAGE_MAP()

第 页 共 页

广西工学院课程设计用纸

};

CMFCView.cpp实现文件中添加的代码 CMFCView::CMFCView()//在构造函数中 初始化一些变量 { // TODO: add construction code here m_bDraw = false;//左键按下标志 m_nLineStyle = 0;//线形状 m_nLineWidth = 1;//线宽 m_DrawIndex = 0;//绘画类型索引 0的画 为鼠标 m_color = RGB(0,0,0);//初始化画笔颜色 }

void CMFCView::OnDraw(CDC* pDC)//在OnDraw函数中添加的代码 { CMFCDoc* pDoc = GetDocument();

//---------------------重绘时显示任意曲线-----------------------------------// CTypedPtrList& strokeList = pDoc->m_strokeList; POSITION pos = strokeList.GetHeadPosition(); while (pos != NULL) { CStroke* pStroke = strokeList.GetNext(pos); pStroke->DrawStroke(pDC); }

//-------------------重绘时显示保存在m_graph中的图形------------------// int pCount = m_graph.GetSize(); for(int j=0;jDraw(pDC); }

//------------------------以下代码用于 绘制有橡皮条功能的图形----------------// if(m_bDraw == true) { switch(m_DrawIndex) { case 1: DrawLine(m_start,m_end); break; case 3: DrawArrowLine(m_start,m_end); break;

第 页 共 页

百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库MFC绘图版 软件说明书(3)在线全文阅读。

MFC绘图版 软件说明书(3).doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印 下载失败或者文档不完整,请联系客服人员解决!
本文链接:https://www.77cn.com.cn/wenku/zonghe/483644.html(转载请注明文章来源)
Copyright © 2008-2022 免费范文网 版权所有
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ: 邮箱:tiandhx2@hotmail.com
苏ICP备16052595号-18
× 注册会员免费下载(下载后可以自由复制和排版)
注册会员下载
全站内容免费自由复制
注册会员下载
全站内容免费自由复制
注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: