MFC画二维动态图表[GDI]
源博客:http://www.codeproject.com/Articles/9350/2D-Animated-Charts
源代码:http://download.csdn.net/detail/nuptboyzhb/4202051
简介:CGraphObject是由CWnd类派生出来,因此,CGraphObject类是一个窗口类;即,每个图表都是一个窗口;因此,每一个图表的创建,应该放在OnCreate函数或OnInitialUpdate函数中;其应用过程,与窗口类型的控件(如CButton)非常类似;
应用:
1. 将相关的.h和.cpp文件复制到工程目录中,并载入到工程;
[GraphObject.h GraphObject.cpp]
[MathParams.h]
[2DLineGraph.h 2DLineGraph.cpp]
[2DBarGraph.h 2DBarGraph.cpp]
[2DPieGraph.h 2DPieGraph.cpp]
2. 在类所在的头文件中,包含其相应的头文件;#include "GraphObject.h"并定义相应的资源ID窗口;
3. 为类增加图表类型的指针作为其成员变量;
CGraphObject* m_pGraphObject1;
//……一下详见代码
4. 在View类的OnInitialUpdate()函数中,初始化这些图表窗口,或对话框的OnInitDialog()函数;或Oncreate函数;(注意:视图窗口完全建立后第一个被框架调用的函数。框架在第一次调用OnDraw前会调用OnInitialUpdate)
// Create CGraphObject1 ( 2DPie graph )
m_pGraphObject1 = new CGraphObject();
//创建一个图表窗口,大小,父窗口的指针,资源ID(自定义)
m_pGraphObject1->Create( NULL, NULL, NULL, CRect(40,20,240,220), this, ID_OBJECT_GRAPH_1, NULL );
//注意,应在头文件中定义资源ID,如:#define ID_OBJECT_GRAPH_1 12345
// Create graph and set graph parameters
m_pGraphObject1->CreateGraph( GT_2DPIE );//创建一个二维饼状图
m_pGraphObject1->SetGraphBackgroundColor( RGB(255,255,255) );//设置背景颜色
m_pGraphObject1->SetGraphTitle( "2DPie No. 1" );//设置标题
m_pGraphObject1->SetGraphSubtitle( "animation - none" );//设置子标题
m_pGraphObject1->SetGraphTitleShadow( FALSE );//标题无阴影
m_pGraphObject1->SetGraphSubtitleShadow( FALSE );//子标题无阴影
m_pGraphObject1->SetGraphTitleColor( RGB(128,128,128) );//设置标题颜色
m_pGraphObject1->SetGraphSubtitleColor( RGB(96,96,96) );//设置子标题颜色
//设置注释的背景颜色
m_pGraphObject1->SetGraphLegendBackgroundColor( RGB(208,208,208) );
// Add graph segments
//为饼形图添加数据段(百分比,颜色,名程)
m_pGraphObject1->Add2DPieGraphSegment( 40, RGB(255,0,0), "Seg_1" );
m_pGraphObject1->Add2DPieGraphSegment( 25, RGB(0,255,0), "Seg_2" );
m_pGraphObject1->Add2DPieGraphSegment( 15, RGB(0,0,255), "Seg_3" );
m_pGraphObject1->Add2DPieGraphSegment( 5, RGB(255,0,255), "Seg_4" );
m_pGraphObject1->Add2DPieGraphSegment( 8, RGB(0,255,255), "Seg_5" );
m_pGraphObject1->Add2DPieGraphSegment( 7, RGB(255,255,0), "Seg_6" );
// 设置图像动画
m_pGraphObject1->SetGraphAnimation( FALSE, AT_PIE_DRAW );
5. 在View类的析构函数中,删除成员变量的指针;
m_pGraphObject1->DestroyWindow();//关闭窗口
delete m_pGraphObject1;//删除指针
注意:本人将MathParams.h进行了修改,新增了
#pragma comment(lib,"Gdi32.lib")
#pragma comment(lib,"Msimg32.lib")
并将MathParams.h被三个图形的.cpp文件中包含
将其封装到Dll动态链接库中
源代码:http://download.csdn.net/detail/nuptboyzhb/4205148
封装后,只需要将[2DGraph.lib][ 2DGraph.dll][ GraphObject.h]这三个文件拷贝到工程目录中即可,在需要用到的地方只需要包含其头文件即可;
#include "GraphObject.h"
#pragma comment(lib,"2DGraph.lib")
然后,下面的编程和上述3-5步骤中相同;
MFC画二维动态图表[GDI]的更多相关文章
- 分配一维动态数组or 二维动态数组的方法以及学习 new 方法or vector
先来个开胃菜 // 使用new动态分配存储空间 #include<iostream> using std::cout; int main() { // 第1种方式 int *a=new i ...
- vue 画二维码
首先安装一下相关的插件 qrcode2 npm install --save qrcode2 然后在需要画二维码的页面引入一下 import QRCode from 'qrcode2' 最后在meth ...
- matplotlib---插值画二维、三维图
一.画二维图 1.原始数据(x,y) import matplotlib.pyplot as plt import numpy as np #数据 X = np.array(list(i for i ...
- matlab画二维直方图以及双y轴坐标如何修改另一边y轴的颜色
1.首先讲一下如何用hist画二维直方图 x=[- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ...
- go 动态数组 二维动态数组
go使用动态数组还有点麻烦,比python麻烦一点,需要先定义. 动态数组申明 var dynaArr []string 动态数组添加成员 dynaArr = append(dynaArr, &quo ...
- [转载]C++二维动态数组memset()函数初始化
来源:https://blog.csdn.net/longhopefor/article/details/20994919 先说说memset函数: void *memset(void *s,int ...
- matlab 画二维图与三维图
二维图 ezplot('sin(x)');%默认范围 ezplot('sin(x)',[-4 4]);%自己设定范围 三维图 ezmesh('x*x+y*y');%默认范围
- js通过codeURL画二维码
一.函数封装 //生成微信二维码 function xyqrcode(options) { var settings = { dom:'', render: 'canvas', //生成二维码的格式还 ...
- threejs 画二维圆(圆弧)
画圆: var radius = 40, segments = 64, material = new THREE.LineBasicMaterial({ color: 0x0000ff }), geo ...
随机推荐
- node.js第十课(HTTPserver)
概念:Node.js提供了http模块.当中封装了一个高效的HTTPserver和一个简单的HTTPclient. http.server是一个基于事件的HTTP服务器.内部用C++实现 ...
- iOS 拍照保存到相册
之前看了一些开源的代码,里面有一个功能,就是将图片下载到相册,仔细看了其中的代码,只有很简单的一句话,并且保存过后,还可以判断是否保存成功. 如下代码所示, 点击按钮,将self.imageView上 ...
- POJ1985 DFS【STL__vector_的应用】
vector 向量 相当于一个数组 在内存中分配一块连续的内存空间进行存储.支持不指定vector大小的存储.STL内部实现时,首先分配一个非常大的内存空间预备进行存储,即capacit ...
- 引用 移植Linux到s3c2410上
引用 bsky 的 移植Linux到s3c2410上来源:http://www.embed.com.cn/downcenter/Article/Catalog12/4000.htm 移植Linux到s ...
- 17.1.1.7 Setting Up Replication with New Master and Slaves 设置复制对于新的Master和Slaves:
17.1.1.7 Setting Up Replication with New Master and Slaves 设置复制对于新的Master和Slaves: 最简单和最直接的方法是设置复制用于使 ...
- Hadoop集群配置(最全面总结)
Hadoop集群配置(最全面总结) 通常,集群里的一台机器被指定为 NameNode,另一台不同的机器被指定为JobTracker.这些机器是masters.余下的机器即作为DataNode也作为Ta ...
- methanol 模块化的可定制的网页爬虫软件,主要的优点是速度快。
methanol模块化的可定制的网页爬虫软件,主要的优点是速度快. 下载:http://sourceforge.net/projects/methabot/?source=typ_redirect R ...
- 在Eclipse/MyEclipse中安装spket插件
Spket ide是强大的工具包为了JavaScript和XML的开发,这个强大的编辑器对JavaScript, XUL/XBLand Yahoo! Widget的开发都有全面的支持 ,比如代码完毕, ...
- JSU省赛队员选拔赛个人赛1(Coin Change、Fibbonacci Number、Max Num、单词数、无限的路、叠筐)
JSU省赛队员选拔赛个人赛1 一.题目概述: A.Coin Change(暴力求解.动态规划) B.Fibbonacci Number(递推求解) C.Max Num(排序.比较) D.单词数 ...
- eclipse No Default Proposals 无提示
链接地址:http://blog.csdn.net/rogerjava/article/details/5689785 今天特抑郁,早上开机后发现eclipse的代码提示功能不好使了,Alt+/ 这么 ...