在用VC做有关图表的时候,感觉不是那么方便,在codeproject找到一个柱形图的实用类,原文地址为:http://www.codeproject.com/KB/miscctrl/CBarChart.aspx。它可以很快速的生成柱状图,并且支持输出位图、支持打印、支持从数据库导入。

下面介绍下基本步骤:

1.添加BarChart.cpp 和 BarChart.h工程;

2.在需要使用的地方添加头文件

#include "BarChart.h"

3.定义一个CBarChart的变量;

CBarChart    m_chart;

4.在实现文件里面使用Create方法创建图表柱形图;

      1).创建图表

// Create a bar chart control
if (!m_chart.Create(
rcBound, // Bounding rectangle of the control
this, // A pointer to the parent window to be shown on
0 )) // ID of this control
{
// Error, can't create the chart
}
//If Create suceeds, it returns TRUE.

      2).设置标题、背景颜色

m_chart.SetTitle("A test chart, displaying some dummy data...");
m_chart.SetBKColor(RGB(255, 255, 240));

      3).添加柱形图表

m_chart.AddBar(
1600.356, // A value to be shown at the top of the bar
"Jan", // A label under the bar chart
RGB(255,255,0)); // Color of the bar

      4).网格线显示、柱形描述、柱形提示

m_chart.ShowGrid(m_bShowGrid, TRUE);            // Show/Hide grids
m_chart.ShowBarText(1, m_bShowText, TRUE); // Show/Hide values(top)
m_chart.ShowLabel(m_bShowLabel, TRUE); // Show/Hide labels(bottom)
m_chart.ShowTooltip(m_bShowTip); // Activate/deactivate tooltips

      5).网格线大小

SetGridLines(
int nHorLineCount, // Number of horizontal lines, 0 = ignore
int nVerLineCount, // Number of vertical lines, 0 = ignore
BOOL bFixedSize, // If TRUE, first 2 parameters will be ignored
int nFixedSize) // A fixed value that defines distance between 2 lines,
// Will be used if previous parameter is set to TRUE

    6).缩放

m_chart.SetAutoScale(m_bScale);         // Set chart to be auto scaled
// Reposition window, so it finds out the size to fit into
m_chart.SetWindowPos( 0, 0, 0,
rcClient.Width(),
rcClient.Height() , SWP_NOMOVE);
m_chart.Refresh(); // Force the chart to redraw itself // You might also need to override OnSize of the
// Parent to position the chart, so it is always at the size you like

      7).删除柱形

m_chart.RemoveAt(nRemIndex);    // Removes the item indexed nRemIndex.
// Index is zero based.
m_chart.RemoveAll(); // Removes all bars

      8).保存bmp文件

// Save chart as a bitmap file
if (!m_chart.SaveToFile())
{
AfxMessageBox(m_chart.GetLastErrorMessage());
};

      9).打印

m_chart.Print();        // Prints the whole chart fitted in the page.
// If you have a lot of bars, I recommend selecting landscape in the
// print dialog box.

      10).连接数据库

//--------------------------------------------创建ODBC连接
// Use this form to call a stored procedure or a query and use
// result set as chart input ReadFromDatabase("DS Name", "Stored proc/Query Name", "List of all parameters",
"Bars Color", "UserName", "Password")); // Note that the query or stored procedure MUST have at least 2 columns,
// First column MUST be of type char with maximum length of 50 and
// Second a double. These columns will be used as input data for the chart. //--------------------------------------------连接数据库表
m_chart.ReadFromDatabase("DS Name", "Table name", "Filter",
"Laabel column name", "dValue column name",
Bars color , "username", "password"); //--------------------------------------------显示
if (!m_chart.ReadFromDatabase("CHTst", "SpChartGetSale", "1, 12",
RGB(0, 0, 0), "hamed", "hamed"))
{
AfxMessageBox(m_chart.GetLastDatabaseErrMessage());
};
or
m_chart.ReadFromDatabase("CHTst", "Sales", "",
"Month", "SaleRate",
RGB(0, 0, 0) , "hamed", "hamed");

 

5.实例

CRect rcClient;
GetClientRect(&rcClient); if (!m_chart.Create(CRect(110, 50,
rcClient.Width()-10,
rcClient.Height() - 50), this, 1050 ))
{
if (!m_chart.GetSafeHwnd())
{
AfxMessageBox("Unable to create the chart control");
return;
} m_chart.Reset();
m_chart.SetAutoScale(FALSE);
} m_chart.SetTitle("A test chart, displaying some dummy data...");
m_chart.SetBKColor(RGB(255, 255, 240));
m_chart.ShowTooltip(TRUE); m_chart.AddBar(1600.356,"Jan", RGB(255,255,0));
m_chart.AddBar(2841.5468,"Feb", RGB(255,0,0));
m_chart.AddBar(1045.3258,"Mar", RGB(100,100,200));
m_chart.AddBar(1502.215,"Apr", RGB(0,255,0));
m_chart.AddBar(1467,"MAY", RGB(255,255,255));
m_chart.AddBar(1678.354,"JUN", RGB(200,255,255));
m_chart.AddBar(1785.689,"JUL", RGB(255,240,40));
m_chart.AddBar(1283.099,"AUG", RGB(255,60,130));
m_chart.AddBar(1554.879,"SEP", RGB(255,255,200));
m_chart.AddBar(1400.10,"OCT", RGB(130,235,250));
m_chart.AddBar(1600.556,"NOV", RGB(100,150,200));
m_chart.AddBar(1900.3546,"DES", RGB(150,240,80), TRUE);

运行结果:

源文件下载:http://download.csdn.net/detail/wuyuan2011woaini/9592992

CBarChart柱形图类的更多相关文章

  1. Java类的继承与多态特性-入门笔记

    相信对于继承和多态的概念性我就不在怎么解释啦!不管你是.Net还是Java面向对象编程都是比不缺少一堂课~~Net如此Java亦也有同样的思想成分包含其中. 继承,多态,封装是Java面向对象的3大特 ...

  2. ***百度统计图表Echarts的php实现类,支持柱形图、线形图、饼形图

    /** * 百度数据统计图表echart的PHP实现类 * * 原作者: * @author: chenliujin <liujin.chen@qq.com> * @since 2013- ...

  3. AChartEngine 安卓折线图 柱形图等利器

    http://www.eoeandroid.com/thread-548233-1-6.html 最近公司项目中要用到折线图,状态类型的图标要用到折线图,柱形图等,并且能够动态显示,在网上找了许多de ...

  4. iOS使用Charts框架绘制—柱形图

    首先看一下最终要实现的效果: 最终效果 一.初始化barChartView 绘制柱形图需要用到BarChartView这个类,下面是初始化代码: self.barChartView = [[BarCh ...

  5. XCL-Charts图表库中柱形图的同源风格切换介绍

    柱形图是被使用最多的图之中的一个,在写XCL-Charts这个Android图表库时,为它花费的时间相当多,不是由于有多难绘制,而是要在设计时怎样才干保证图基类能适应各种情况,能灵活满足足够多的需求, ...

  6. Android绘图机制(四)——使用HelloCharts开源框架搭建一系列炫酷图表,柱形图,折线图,饼状图和动画特效,抽丝剥茧带你认识图表之美

    Android绘图机制(四)--使用HelloCharts开源框架搭建一系列炫酷图表,柱形图,折线图,饼状图和动画特效,抽丝剥茧带你认识图表之美 这里为什么不继续把自定义View写下去呢,因为最近项目 ...

  7. 关于echarts.js 柱形图

    echarts.js官网: http://www.echartsjs.com/index.html 这是我所见整理最详细echarts.js 柱形图博客: https://blog.csdn.net/ ...

  8. High-speed Charting Control--MFC绘制图表(折线图、饼图、柱形图)控件

    原文地址:https://www.codeproject.com/articles/14075/high-speed-charting-control 本文翻译在CodeProject上的介绍(主要还 ...

  9. 【207】WinForm Chart类

    目录: 在工具箱中找到 Chart 控件并使用 设置 Chart 属性 代码中设置属性 属性中设置属性 Chart 类说明 ChartAreas ChartAreaCollection 类 Chart ...

随机推荐

  1. [ShortCut] IE10快捷键

    适用范围: Windows 8 操作步骤: 1.快速输入网址: “Ctrl+L”.“F4”:在IE10下按下“Ctrl+L”快捷键,可以直接将光标转到浏览器地址栏(注:地址栏中的网址会被选中),可以直 ...

  2. Ext.NET 4.1 最新版本破解

    Ext.NET 4.1 最新版本破解 今天在将Ext.NET 4.1版本的程序发布到公网时居然要license(localhost和127.0.0.1不收费),而且一年$4999,突然间觉得这是什么鬼 ...

  3. C#简单文件下载-3行代码

    使用WebClient string url = "http://www.mozilla.org/images/feature-back-cnet.png"; WebClient ...

  4. mysql select语句解析

    select语句用于从一个或多个数据表选出特定行.特定列的交集 最简单的select语句的语法格式如下: select column1,column2 ........      (列) from 数 ...

  5. (旧)子数涵数·Flash——影片剪辑的其他操作

    一.复制影片剪辑 1.方法:duplicatemovieClip(影片实名,新实名,深度级别) 2.解释:影片实名就是你要复制的对象,新实名就是你要粘贴的对象,深度级别就是粘贴后的影片剪辑的堆叠顺序( ...

  6. 【iOS】通知监听

    下例为:监听文本框  accountField  内容的改变, 当发生改变时, 调用textChange方法(多次).监听结束需要移除通知. - (void)viewDidLoad { [super ...

  7. C# Winform打包部署时添加注册表信息实现开机启动

    使用VS自带的打包模块可以很方便的对项目进行打包部署,同时我们也可以在安装部署时操作注册表实现开机启动软件.具体实现如下: 1.添加安装部署项目后,鼠标右键安装项目->视图->注册表,HK ...

  8. elasticsearch的mapping映射

    Mapping简述 Elasticsearch是一个schema-less的系统,但并不代表no shema,而是会尽量根据JSON源数据的基础类型猜测你想要的字段类型映射.Elasticsearch ...

  9. javascript宿主对象之window.frames

    window.frames属性是当前页面所有框架的集合.要注意的事,这里并没有frame和iframe做出区分.而且,无论页面存不存在框架,window.frames属性总是存在的,并总是指向wind ...

  10. javascript宿主对象之window.navigator

    window.navigator用来反映浏览器及其功能信息的对象. // 检测浏览器版本信息 function getBrowserInfo(){ var Sys = {}; var ua = win ...