MFC绘图的几种方法
MFC绘图的几种方法
/*
1.可以使用OnDraw()函数直接绘图;
2.使用菜单绘图(添加菜单——添加菜单函数(消息映射函数))
3.自定义函数绘图(添加成员函数——可以在OnDraw()函数调用,也可以在菜单函数里调用)
4.工具条设计(实现图标和子菜单关联)
*/
1.可以使用OnDraw()函数直接绘图;
/
// CTestView drawing
void CTestView::OnDraw(CDC* pDC)
{
CTestDoc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
// TODO: add draw code for native data here
CRect rect;
GetClientRect(&rect);
pDC->SetMapMode(MM_ANISOTROPIC);
pDC->SetWindowExt(rect.Width(),rect.Height());
pDC->SetViewportExt(rect.Width(),-rect.Height());
pDC->SetViewportOrg(rect.Width()/2,rect.Height()/2);
rect.OffsetRect(-rect.Width()/2,-rect.Height()/2);
CPoint ld,rt;//
//绘制外部黑色椭圆
ld=CPoint(-200,-150),rt=CPoint(200,150);
CBrush NewBrush, *pOldBrush;
NewBrush.CreateSolidBrush(RGB(0,0,0));
pOldBrush=pDC->SelectObject(&NewBrush);
pDC->Ellipse(CRect(ld,rt));
pDC->SelectObject(pOldBrush);
NewBrush.DeleteObject();
//绘制白色外部圆
ld=CPoint(-147,-147),rt=CPoint(147,147);
pDC->Ellipse(CRect(ld,rt));
//绘制内部黑色椭圆
ld=CPoint(-140,-90),rt=CPoint(140,90);
NewBrush.CreateSolidBrush(RGB(0,0,0));
pOldBrush=pDC->SelectObject(&NewBrush);
pDC->Ellipse(CRect(ld,rt));
pDC->SelectObject(pOldBrush);
NewBrush.DeleteObject();
//绘制白色内部圆
ld=CPoint(-88,-88),rt=CPoint(88,88);
pDC->Ellipse(CRect(ld,rt));
}
2.使用菜单绘图(添加菜单——添加菜单函数(消息映射函数))
void CTestView::OnMdraw()
{
// TODO: Add your command handler code here
CDC * pDC=GetDC();//初始化指针pDC
/*添加上一种方法的代码*/
ReleaseDC(pDC);//释放指针
}
3.自定义函数绘图
void CTestView::DrawObject(CDC *pDC)
{
CRect rect;
GetClientRect(&rect);
pDC->SetMapMode(MM_ANISOTROPIC);
pDC->SetWindowExt(rect.Width(),rect.Height());
pDC->SetViewportExt(rect.Width(),-rect.Height());
pDC->SetViewportOrg(rect.Width()/2,rect.Height()/2);
rect.OffsetRect(-rect.Width()/2,-rect.Height()/2);
CPoint ld,rt;//
//绘制外部黑色椭圆
ld=CPoint(-200,-150),rt=CPoint(200,150);
CBrush NewBrush, *pOldBrush;
NewBrush.CreateSolidBrush(RGB(0,0,0));
pOldBrush=pDC->SelectObject(&NewBrush);
pDC->Ellipse(CRect(ld,rt));
pDC->SelectObject(pOldBrush);
NewBrush.DeleteObject();
//绘制白色外部圆
ld=CPoint(-147,-147),rt=CPoint(147,147);
pDC->Ellipse(CRect(ld,rt));
//绘制内部黑色椭圆
ld=CPoint(-140,-90),rt=CPoint(140,90);
NewBrush.CreateSolidBrush(RGB(0,0,0));
pOldBrush=pDC->SelectObject(&NewBrush);
pDC->Ellipse(CRect(ld,rt));
pDC->SelectObject(pOldBrush);
NewBrush.DeleteObject();
//绘制白色内部圆
ld=CPoint(-88,-88),rt=CPoint(88,88);
pDC->Ellipse(CRect(ld,rt));
}
两种方式调用
(1)在OnDraw()函数里面调用
// CTestView drawing
void CTestView::OnDraw(CDC* pDC)
{
CTestDoc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
// TODO: add draw code for native data here
DrawObject(pDC);
}
(2)在菜单函数里面调用
// CTestView message handlers
void CTestView::OnMdraw()
{
// TODO: Add your command handler code here
CDC * pDC=GetDC();//初始化指针pDC
DrawObject(pDC);
ReleaseDC(pDC);//释放指针
}
4.工具条设计(实现图标和子菜单关联)
5、运行结果
原文:https://blog.csdn.net/lanyandong/article/details/80290691
MFC绘图的几种方法相关推荐
- 从源码分析DEARGUI之动态绘图的两种方法
from dearpygui.dearpygui import * import numpy as npdef addButtons(*args):add_button("添加的按钮1&qu ...
- python 大数据量绘图_Matplotlib绘图遇到时间刻度就犯难?现在,一次性告诉你四种方法...
点击上方"蓝字"关注我们 Python大数据分析 记录 分享 成长 添加微信号" CNFeffery "加入技术交流群 最近有小伙伴私信我关于matpl ...
- Matpotlib绘图遇到时间刻度就犯难?现在,一次性告诉你四种方法
公众号后台回复"图书",了解更多号主新书内容 作者:宁海涛 来源:DataCharm 点击蓝字 关注我们 最近有小伙伴私信我关于matplotlib时间类型刻度的设置问题,第一感觉 ...
- MFC中获取命令行参数的几种方法
在MFC程序中,可以用以下几种方法来获取命令行参数. 为方便说明,我们假设执行了命令:C:/test/app.exe -1 -2 方法一 ::GetCommandLine(); 将获取到 " ...
- 两种方法查看MFC源代码
分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow 也欢迎大家转载本篇文章.分享知识,造福人民,实现我们中华民族伟大复兴! 第一种- ...
- MFC实现从一个窗口向另一个窗口发送消息的两种方法
实现从一个窗口向另一个窗口发送消息,使用过下面两种方法 /*方法一:通过用SDK的标准API来查找其他对话框窗口返回句柄,并且发送信息 HWND hWnd; //通过SDK的FindWindow函数得 ...
- MFC多语言实现的两种方法
前不久由于工作需要,用新工具Passolo制作软件的英文版,顺便回顾了一下以前一直用的老方法--动态加载英文资源的DLL.今天有空整理了一下,与大家分享两种方法是如何实现软件多语言的. 方法一:动态加 ...
- android 8 忘记图案,手机绘图解锁忘了怎么办?三种方法教你轻松搞定
现在市场上的智能手机基本上都带有九宫格锁屏,这样的设计受到了广大用户们的喜爱,渐渐的成为了用户们的不二选择,当然这个锁屏的优点有很多,但是唯一不足的地方就是一旦忘记图案密码就会让人想抓狂.手机绘图解锁 ...
- python简单绘图步骤_python画图的两种方法
python如何画图?这里给大家介绍两款python绘图的库:turtle和Matplotlib. 1 安装turtle Python2安装命令:pip install turtule Python3 ...
最新文章
- 数据库创建索引的原则
- C#题目及答案(1)
- Mongo 与 SQL 操作对应介绍
- 阅读《软件工程—理论方法与实践》第五章心得体会
- 电脑蓝屏分析教程,附工具WinDbg(x86 x64)6.12.0002.633下载
- 计算机固态硬盘作用,固态硬盘是什么及作用
- 《ZLToolKit源码学习笔记》(17)网络模块之基础接口封装类SockUtil
- 网络文学网站的盈利模式分析
- you-get和youtube-dl下载全网视频
- “云”溪笔谈 | VR——看得见的未来
- 特斯拉如何开发基于纯视觉的深度学习系统
- xshell如何将Windows文件上传到linux
- 记录一次mongoDB错误 errmsg: cannot use the part () to traverse the element
- 如何在win10的windows Defender中添加信任文件,使其免遭误删除的厄运
- 两个小Tips: 解决Matlab初始化时间过长Office使用(KMS工具无效时)
- C++11 in Qt-安晓辉-专题视频课程
- python画柱状图怎么规定x轴_Python:Matplotlib 画曲线和柱状图(Code)
- 自动驾驶学习过程及资料整理
- BZOJ2095[Poi2010] Bridges
- android10动态显示隐藏导航栏,状态栏
热门文章
- 单片机中断程序实例_单片机定时器中断实现长时间定时程序
- python学习-列表解析、字典解析
- profile matlab,使用profile功能对Matlab性能调优
- 服务器虚拟交换机到网卡不通,S7700堆叠,服务器之间相互ping不通,关闭备交换机ping正常...
- python写ui自动化测试用例_自动化测试(6) | Web UI 自动化测试方案
- 通俗易懂,嵌入式Linux驱动基础
- 计算机专业哪家强,计算机专业哪家强?这4所大学水平一流,网友:都是“大佬”级别...
- css-net 中华版,使用C#代码选择CSS样式(ASP.net)
- 影之刃3服务器维护,影之刃3手游2021年3月11日维护公告_影之刃3手游2021年3月11日更新了什么_玩游戏网...
- SSD浅层网络_目标检测SSD