对话框类调用视图类并绘图(基于MFC)
来源:互联网 发布:python游戏开发平台 编辑:程序博客网 时间:2024/06/10 10:33
注:这是参考网上相关的论坛内容综合加工而成,目的是在基于MFC的对话框中加入视图类并绘图。
实现方法:
1.建立一个基于对话框的MFC应用程序MyDlg.
2.在对话框中加入一个静态文本档IDC_DRAW,作为视图类的容器
3.在MyDlg中新建一个视图类CMyView派生自CView,在CMyDlgDlg.cpp中加入代码(在类定义的前面部分写就可以了)
#include "MyView.h"
CMyView *m_pview;4.在对话框的初始化函数中加入以下代码
UINT ID = IDC_DRAW; CWnd *pWnd = this->GetDlgItem(ID); CRect Rect; pWnd->GetWindowRect(Rect); this->ScreenToClient(Rect); m_pview = (CMyView*)RUNTIME_CLASS(CMyView)->CreateObject(); if (NULL==m_pview) { return FALSE; } m_pview->Create(NULL, NULL, AFX_WS_DEFAULT_VIEW, Rect, this, ID);至此,创建完成,下面来进行测试,给视图里面画条曲线
1 在视图类的OnDraw函数添加如下代码
void CMyView::OnDraw(CDC* pDC) {// TODO: Add your specialized code here and/or call the base classCDocument* pDoc = GetDocument();// TODO: ÔÚ´Ë´¦Îª±¾»úÊý¾ÝÌí¼Ó»æÖÆ´úÂëint data[20]={18,21,32,40,41,39,42,35,33,23,17,20,24,11,9,19,22,32,40,36};CRect rc;GetClientRect(rc);rc.DeflateRect(50,50);int gridXnums=10,gridYnums=8;int dx=rc.Width()/gridXnums;int dy=rc.Height()/gridYnums;CRect gridRect(rc.left,rc.top,rc.left+dx*gridXnums,rc.top+dy*gridYnums);CPen gridPen(0,0,RGB(0,100,200));CPen *oldPen=pDC->SelectObject(&gridPen);for(int i=0;i<=gridXnums;i++){pDC->MoveTo(gridRect.left+i*dx,gridRect.bottom);pDC->LineTo(gridRect.left+i*dx,gridRect.top);}for(i=0;i<=gridYnums;i++){pDC->MoveTo(gridRect.left,gridRect.top+i*dy);pDC->LineTo(gridRect.right,gridRect.top+i*dy);}pDC->SelectObject(oldPen);gridPen.Detach();gridPen.CreatePen(0,0,RGB(0,0,200));pDC->SelectObject(&gridPen);CBrush gridBrush(RGB(255,0,0));CBrush* oldBrush=pDC->SelectObject(&gridBrush);POINT ptRect[4]={{-3,-3},{-3,3},{3,3},{3,-3}},ptDraw[4];int deta; POINT pt[256];int nCount=20;deta=gridRect.Width()/nCount;for(i=0;i<nCount;i++){pt[i].x=gridRect.left+i*deta;pt[i].y=gridRect.bottom-(int)(data[i]/60.0*gridRect.Height());for(int j=0;j<4;j++){ptDraw[j].x=ptRect[j].x+pt[i].x;ptDraw[j].y=ptRect[j].y+pt[i].y;}pDC->Polygon(ptDraw,4);}pDC->Polyline(pt,nCount);pDC->SelectObject(oldPen); pDC->SelectObject(oldBrush);}
2 结果如下图
0 0
- 对话框类调用视图类并绘图(基于MFC)
- MFC 对话框类 工程视图中消失
- mfc:单文档中对话框类调用视图类和框架类成员变量的实例
- 基于MFC对话框的OpenGL类
- 基于MFC对话框的OpenGL类
- MFC对话框绘图
- MFC中对话框向视图类的数据发送
- 基于对话框的绘图
- MFC 绘图类
- MFC绘图类
- 基于MFC的OpenGL绘图(转)
- 如何在对话框类中调用视图类中的函数
- MFC在对话框上面绘图
- MFC 基于对话框的图片控件(picture)动态加载.bmp图片并显示
- MFC基于对话框如何添加位图并使位图背景透明(TransparentBlt函数)
- MFC基于对话框——右键弹出菜单,并响应函数
- MFC基于对话框——右键弹出菜单,并响应函数
- MFC基于对话框——右键弹出菜单,并响应函数
- SD卡的初始化操作
- gf_file_from_blob(blob blob1,string file1) pb大字段生成文件方法
- 第一次写WCF遇到的几个问题
- Android页面转换的两种方式
- Eclipse安装SVN插件
- 对话框类调用视图类并绘图(基于MFC)
- POJ 2923 Relocation / 状态压缩DP
- 选择GUI开发还是Web开发的问题
- android 真机调试(2014)
- Android复习
- nodejs express 加载html模板
- 002_025 Python 修改Windows上一系列文件的属性,如设置文件为只读、归档等
- 优先队列priority_queue
- mysql-5.6.16-winx64.zip 安装