在用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. 【推荐】iOS汉字转拼音第三方库

    PinYin4Objc是一个在git汉字转拼音的开源库,支持简体和繁体中文.效率POAPinyin等其他库要高,转换库也完整下面简单介绍 实现原理 使用unicode_to_hanyu_pinyin. ...

  2. sprint3(第十天)

    因为近期准备四六级考试还有准备期末的作业,任务比较多,所以进度落下了很多,没有完成预期的计划. 燃尽图

  3. P6 Enterprise Project Portfolio Contract Management

    Find documentation for Primavera products here: Primavera Cloud Services Primavera Prime Primavera P ...

  4. C#设计模式——单件模式(Singleton Pattern)

    一.概述在软件开发过程中,我们有时候需要保证一个类仅有一个实例,比如在一个电脑用户下只能运行一个outlook实例.这时就需要用到单件模式.二.单件模式单件模式保证一个类仅有一个实例,并提供一个访问它 ...

  5. ANT自动打包U3D安卓项目研究笔记

    概述 因项目使用Atlassian Stash作为项目源码管理端,且其支持Ant命令自动编译,可使其根据最新的代码自动打包,故产生该研究Ant打包的任务.在此将研究过程及一些相关知识整理记录在此. 本 ...

  6. onclick事件与onserverclick事件

    1.这里仅对web控件而言,onclick事件执行的是客户端中的代码, <%@ Page Language="C#" AutoEventWireup="true&q ...

  7. 004_URL 路由 - 定制路由系统 & 使用区域

    定制路由系统 路由系统是灵活可配置的,当然还可以通过下面这两种方式定制路由系统,来满足其他需求. 1.  通过创建自定义的RouteBase实现: 2.  通过创建自定义路由处理程序实现. 创建自定义 ...

  8. XMLHelper.cs

    http://yunpan.cn/Q7czcYTwE8qkc  提取码 545c using System; using System.Linq; using System.Xml.Linq; usi ...

  9. [转]基于 Quercus 的手游项目终于上线了

    原文:http://blog.andsky.com/quercus-php-ngame/ 经过半年的开发,我们第一款手游戏终于开发完毕,架构使用了 netty + Quercus 实现用 php 通过 ...

  10. 如何把maven项目转成web项目

    创建Web工程,使用eclipse ee创建maven web工程 1.右键项目,选择Project Facets,点击Convert to faceted from 2.更改Dynamic Web ...