源博客: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]的更多相关文章

  1. 分配一维动态数组or 二维动态数组的方法以及学习 new 方法or vector

    先来个开胃菜 // 使用new动态分配存储空间 #include<iostream> using std::cout; int main() { // 第1种方式 int *a=new i ...

  2. vue 画二维码

    首先安装一下相关的插件 qrcode2 npm install --save qrcode2 然后在需要画二维码的页面引入一下 import QRCode from 'qrcode2' 最后在meth ...

  3. matplotlib---插值画二维、三维图

    一.画二维图 1.原始数据(x,y) import matplotlib.pyplot as plt import numpy as np #数据 X = np.array(list(i for i ...

  4. matlab画二维直方图以及双y轴坐标如何修改另一边y轴的颜色

    1.首先讲一下如何用hist画二维直方图 x=[- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ...

  5. go 动态数组 二维动态数组

    go使用动态数组还有点麻烦,比python麻烦一点,需要先定义. 动态数组申明 var dynaArr []string 动态数组添加成员 dynaArr = append(dynaArr, &quo ...

  6. [转载]C++二维动态数组memset()函数初始化

    来源:https://blog.csdn.net/longhopefor/article/details/20994919 先说说memset函数: void *memset(void *s,int ...

  7. matlab 画二维图与三维图

    二维图 ezplot('sin(x)');%默认范围 ezplot('sin(x)',[-4 4]);%自己设定范围 三维图 ezmesh('x*x+y*y');%默认范围

  8. js通过codeURL画二维码

    一.函数封装 //生成微信二维码 function xyqrcode(options) { var settings = { dom:'', render: 'canvas', //生成二维码的格式还 ...

  9. threejs 画二维圆(圆弧)

    画圆: var radius = 40, segments = 64, material = new THREE.LineBasicMaterial({ color: 0x0000ff }), geo ...

随机推荐

  1. Unity KillCount

    using UnityEngine; using System.Collections; public class KillCountMult : MonoBehaviour { public GUI ...

  2. android一个弹出菜单的动画(二)

    假设做一个弹出的控件,我们能够进行加入view: 写class SatelliteMenu extends FrameLayout private void init(Context context, ...

  3. Android Intent 解析之二

    服务端Intent运行过程: Sticky:这个类型的BroadCast表示某些Intent须要被保留,当新的应用起来后,须要关注这个消息,可是呢,又不须要启动这个应用来接收此消息,比方耳机插入等消息 ...

  4. HDU 4825 Xor Sum 字典树+位运算

    点击打开链接 Xor Sum Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 132768/132768 K (Java/Others) ...

  5. 2015 款 Macbook Pro 的 ForceTouch 触控板开启 三指拖动

    RT, 默认的触控板设置中没有了三指拖动这个选项, 但是可以通过勾选 辅助功能 -> 鼠标与触控板 -> 触控板选项 中的 启用拖移 来启用三指拖动...

  6. 缩略图类库--ThumbLib使用简介

    //加载类库文件 require_once 'path/to/ThumbLib.inc.php'; //实例化类库,传入你要处理的图片的地址可以是网络地址,也可以是本地地址 $thumb = PhpT ...

  7. WM_PAINT消息小结

    WM_PAINT是Windows窗口系统中一条重要的消息,应用程序通过处理该消息实现在窗口上的绘制工作. 1. 系统何时发送WM_PAINT消息? 系统会在多个不同的时机发送WM_PAINT消息:当第 ...

  8. wifi密码破解方法总结(含破解软件下载链接)

    眼下网上流行有非常多无线password的破解方法,总结起来最有用的还是这两种:第一种是Wirelessnetview+WinAirCrackPack软件组合,这个方法简单方便:另外一种就是大家熟悉的 ...

  9. MySQL中关于日期、时间的数据类型和函数

    一.日期相关的数据类型 1.datetime 占用8字节,既显示了日期,又显示了时间.其表示的日期范围为“1000-01-01 00:00:00”到“9999-12-31 23:59:59” 2.da ...

  10. SymmetricDS文档翻译--【Chapter 3. 具体配置(Configuration)[section C]】

    3.6. Routers 眼下的实现中提供的Route实现包括: 1.      Default Router:这个Router发送全部的数据到Router中定义的目标节点所属的组中的全部的节点. 2 ...