Chart 图表一例

原创 2003年12月12日 01:37:00

  Chart组件的例子很少,让一些使用者用起来找不到头绪,现把我以前看过的一个比较好的例子拿出来与大家共同学习。

      例图:

 <?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />

<?xml:namespace prefix = v ns = "urn:schemas-microsoft-com:vml" />CSDN_Dev_Image_2003-12-112120290.png

 

 

 

程序代码如下:

 

//---------------------------------------------------------------------------

#include <vcl.h>

#pragma hdrstop

 

#include "TeeBasic.h"

#include <stdlib.h>

#include <math.h>

//---------------------------------------------------------------------------

#pragma package(smart_init)

#pragma resource "*.dfm"

TDemoForm *DemoForm;

//---------------------------------------------------------------------------

__fastcall TDemoForm::TDemoForm(TComponent* Owner)

    : TForm(Owner)

{

}

//---------------------------------------------------------------------------

TChart* TDemoForm::TheChart()

{

  String S = Notebook1->Pages->Strings[0];

  TPage* page = static_cast<TPage*>(Notebook1->Pages->Objects[Notebook1->PageIndex]);

  return dynamic_cast<TChart*>(page->Controls[0]);

}

 

void TDemoForm::HorizScroll(const double Percent)

{

  ScrollAxis(TheChart()->TopAxis,Percent);

  ScrollAxis(TheChart()->BottomAxis,Percent);

  Button3->Enabled=true;

}

 

void TDemoForm::VertScroll(const double Percent)

{

  ScrollAxis(TheChart()->LeftAxis,Percent);

  ScrollAxis(TheChart()->RightAxis,Percent);

  Button3->Enabled=true;

}

 

void TDemoForm::ScrollAxis(TChartAxis* Axis, const double Percent)

{

  double Amount = -((Axis->Maximum-Axis->Minimum)/(100.0/Percent));

  Axis->SetMinMax(Axis->Minimum-Amount,Axis->Maximum-Amount);

}

 

void __fastcall TDemoForm::ListBox1Click(TObject *Sender)

{

  Notebook1->PageIndex=ListBox1->ItemIndex;

  tmpTimes=-1;

  TheChart()->AnimatedZoom=true;

  TheChart()->AnimatedZoomSteps=4;

  for (int t=0;t<TheChart()->SeriesCount();t++)

    TheChart()->Series[t]->FillSampleValues(

      TheChart()->Series[t]->NumSampleValues());

  TheChart()->UndoZoom();

  CheckBox1->Checked  =TheChart()->View3D;

  ScrollBar2->Enabled =TheChart()->View3D;

  ScrollBar2->Position=TheChart()->Chart3DPercent;

  if (dynamic_cast<TPieSeries*>(TheChart()->Series[0]))

     ScrollBar3->Position=TheChart()->View3DOptions->Elevation;

  else

     ScrollBar3->Position=TheChart()->View3DOptions->Rotation;

  ScrollBar4->Position=TheChart()->View3DOptions->Elevation;

  ScrollBar3->Enabled=TheChart()->View3D;

  ScrollBar4->Enabled=TheChart()->View3D;

}

//---------------------------------------------------------------------------

void __fastcall TDemoForm::FormCreate(TObject *Sender)

{

  tmpTimes=-1;

  ScrollBar1->Position=Timer1->Interval;

  ComboBox1->ItemIndex=0;

  ComboBox2->ItemIndex=0;

  ListBox1->ItemIndex =0;

  ListBox1Click(this);

}

//---------------------------------------------------------------------------

void __fastcall TDemoForm::CheckBox1Click(TObject *Sender)

{

  TheChart()->View3D=CheckBox1->Checked;

  ScrollBar2->Enabled=TheChart()->View3D;

  ScrollBar3->Enabled=TheChart()->View3D;

  ScrollBar4->Enabled=TheChart()->View3D;

}

//---------------------------------------------------------------------------

void __fastcall TDemoForm::CheckBox2Click(TObject *Sender)

{

  Timer1->Enabled=CheckBox2->Checked;

  ScrollBar1->Enabled=Timer1->Enabled;

}

//---------------------------------------------------------------------------

void __fastcall TDemoForm::ScrollBar1Change(TObject *Sender)

{

  Timer1->Interval=ScrollBar1->Position;

}

//---------------------------------------------------------------------------

void __fastcall TDemoForm::Timer1Timer(TObject *Sender)

{

  double tmpX;

  switch (Notebook1->PageIndex) {

    case 0 :

    case 3 :

    case 4 :

    case 6 : {

      for (int t=0;t<TheChart()->SeriesCount();t++) {

        tmpX=TheChart()->Series[t]->XValues->Value[1]-

          TheChart()->Series[t]->XValues->Value[0];

        TheChart()->Series[t]->Delete(0);

        TheChart()->Series[t]->AddXY(

          TheChart()->Series[t]->XValues->Last()+tmpX,

          TheChart()->Series[t]->YValues->Last()+random(100)-50,"",clTeeColor);

      }

      break;

    }

    case 1 :

    case 2 :

    case 8 : {

      if (tmpTimes==-1) {

        tmpSeries=random(TheChart()->SeriesCount());

        tmpIndex =random(TheChart()->Series[tmpSeries]->Count());

        tmpTimes =random(10);

        tmpRandom=2*floor((random(50)-25.0) + .5);

      }

      if (tmpSeries != -1) {

        if (Notebook1->PageIndex == 8) {

          TBubbleSeries* s =

            dynamic_cast<TBubbleSeries*>(TheChart()->Series[tmpSeries]);

          tmpX=s->RadiusValues->Value[tmpIndex]+tmpRandom;

          if (tmpX>=2) {

            s->RadiusValues->Value[tmpIndex]=tmpX;

            if (tmpRandom>0)

              tmpX=s->XValues->Value[tmpIndex]+1;

            else

              tmpX=s->XValues->Value[tmpIndex]-1;

            s->XValues->Value[tmpIndex]=tmpX;

            if (random(10)<5)

              tmpX=s->YValues->Value[tmpIndex]+50;

            else

              tmpX=s->YValues->Value[tmpIndex]-50;

            s->YValues->Value[tmpIndex]=tmpX;

          }

          else tmpTimes=0;

        }

        else

          TheChart()->Series[tmpSeries]->MandatoryValueList()->Value[tmpIndex] =

            TheChart()->Series[tmpSeries]->MandatoryValueList()->Value[tmpIndex]+tmpRandom;

        tmpTimes--;

        TheChart()->Repaint();

      }

      break;

    }

    case 5: {

      TPieSeries* s = dynamic_cast<TPieSeries*>(TheChart()->Series[0]);

      s->Rotate(358);

      break;

    }

  }

}

//---------------------------------------------------------------------------

void __fastcall TDemoForm::Button2Click(TObject *Sender)

{

  Close();

}

//---------------------------------------------------------------------------

void __fastcall TDemoForm::BitBtn1Click(TObject *Sender)

{

  TheChart()->ZoomPercent(120);

  Button3->Enabled=true;

}

//---------------------------------------------------------------------------

void __fastcall TDemoForm::BitBtn2Click(TObject *Sender)

{

  TheChart()->ZoomPercent(80);

  Button3->Enabled=true;

}

//---------------------------------------------------------------------------

void __fastcall TDemoForm::SpeedButton1Click(TObject *Sender)

{

  HorizScroll(10);

}

//---------------------------------------------------------------------------

void __fastcall TDemoForm::SpeedButton4Click(TObject *Sender)

{

  HorizScroll(-10);

}

//---------------------------------------------------------------------------

void __fastcall TDemoForm::SpeedButton2Click(TObject *Sender)

{

  VertScroll(-10);

}

//---------------------------------------------------------------------------

void __fastcall TDemoForm::SpeedButton3Click(TObject *Sender)

{

  VertScroll(10);

}

//---------------------------------------------------------------------------

void __fastcall TDemoForm::CheckBox3Click(TObject *Sender)

{

  TPieSeries* s = dynamic_cast<TPieSeries*>(TheChart()->Series[0]);

  s->Circled=CheckBox3->Checked;

}

//---------------------------------------------------------------------------

void __fastcall TDemoForm::ComboBox1Click(TObject *Sender)

{

  TCustomBarSeries* s = dynamic_cast<TCustomBarSeries*>(TheChart()->Series[0]);

  TComboBox* cb = dynamic_cast<TComboBox*>(Sender);

    s->MultiBar=TMultiBar(cb->ItemIndex);

}

//---------------------------------------------------------------------------

void __fastcall TDemoForm::ScrollBar2Change(TObject *Sender)

{

  TheChart()->Chart3DPercent=ScrollBar2->Position;

}

//---------------------------------------------------------------------------

void __fastcall TDemoForm::Series28GetMarkText(TChartSeries *Sender,

      int ValueIndex, AnsiString &MarkText)

{

   if (ValueIndex==3)

     MarkText="USA";

   else if (ValueIndex==5)

     MarkText="UK";

   else if (ValueIndex==7)

     MarkText="Germany";

   else

     MarkText="";

}

//---------------------------------------------------------------------------

void __fastcall TDemoForm::Button3Click(TObject *Sender)

{

  TheChart()->UndoZoom();

  Button3->Enabled=false;

}

//---------------------------------------------------------------------------

void __fastcall TDemoForm::CheckBox4Click(TObject *Sender)

{

  Series11->Stairs=CheckBox4->Checked;

  Series12->Stairs=CheckBox4->Checked;

}

//---------------------------------------------------------------------------

void __fastcall TDemoForm::FormShow(TObject *Sender)

{

  Timer1->Enabled=true;  // <-- start animation

}

//---------------------------------------------------------------------------

void __fastcall TDemoForm::ScrollBar3Change(TObject *Sender)

{

  if (ScrollBar3->Enabled )

  TheChart()->View3DOptions->Orthogonal=false;

  if (dynamic_cast<TPieSeries*>(TheChart()->Series[0]))

    TheChart()->View3DOptions->Elevation=ScrollBar3->Position;

  else

    TheChart()->View3DOptions->Rotation=ScrollBar3->Position;

}

//---------------------------------------------------------------------------

void __fastcall TDemoForm::ScrollBar4Change(TObject *Sender)

{

  if (ScrollBar4->Enabled) {

    TheChart()->View3DOptions->Orthogonal=false;

    TheChart()->View3DOptions->Elevation=ScrollBar4->Position;

  }

}

//---------------------------------------------------------------------------

EXTJS 4 chart图表样式汇总

theme: 'Category1' theme: 'Category2' theme: 'Category3' theme: 'Category4' theme: 'Categ...
  • u013127751
  • u013127751
  • 2017年06月13日 11:26
  • 343

如何用图表(Chart)列出空的统计列

最近有一个做图表的需求,具体如下: 1)以商机拥有者的团队为列,统计每个团队的商机数目 2)再统计各类型商机的数目   刚接触时以为就是个普通的图表,一个图例条目(序列)是团队,另一个是商机类...
  • zjj303
  • zjj303
  • 2013年10月30日 16:36
  • 743

AAChartKit 一款功能极其强大的开源图表组件库

AAChartKit AAChartKit项目,是在流行的开源前端图表库Highcharts的基础上,封装的面向对象的,一组简单易用,极其精美的图表绘制控件. 适配 iOS 8, ...
  • u013756604
  • u013756604
  • 2017年05月24日 10:12
  • 659

基于Qt的图表库

如果要开发一个 Qt 应用程序(C++ 或 QML),包含绘图和数据可视化,需要插入一些图表,例如:饼图、条形图或更复杂的,有什么可选的图表库呢?一起来看看。...
  • u011012932
  • u011012932
  • 2017年01月18日 18:37
  • 8164

关于微软C#中的Chart图表控件的简单使用

最近公司项目要用到Chart图表控件,这是一个比较老的东西了,目前网络上似乎已经不太流行这个控件,但是只要配置了相关的属性,效果还是可以的。前前后后摸索了好久,接下来谈谈这个件控件最重要的几个属性。 ...
  • Andrewniu
  • Andrewniu
  • 2017年12月08日 09:29
  • 105

C#创建基本图表(Chart Controls)

在.NET环境下微软提供了强大了图表控件,并给多了很多实例,关于图表的基本元素如下: 并且MSDN给出了创建图表的示例步骤,原文地址:http://msdn.microsoft.com/...
  • a364416036
  • a364416036
  • 2016年09月29日 16:56
  • 595

图表(Chart & Graph)你真的用对了吗?

你真的用对了图表吗?本文列举了13 种用于分析和呈现数据的不同类型的图表。为了更好地了解每个图表以及如何使用它们,文中分别对每一种图表进行了概述。...
  • powertoolsteam
  • powertoolsteam
  • 2017年06月07日 11:01
  • 1591

图表配置(Chart)

本节主要讲解图表配置,对应的 API 位置为 chart,主要内容包括图表全局样式、绘图区、图表事件、等相关内容。 一、图表容器 Highcharts 实例化中绑定容器的方式有两种 1、...
  • qq_20545159
  • qq_20545159
  • 2015年09月12日 22:55
  • 446

Extjs4 动态生成图表chart(从后台传数据动态显示)

做项目,需要搞一个图表,从后台的数据库中统计出数据再传到前台来。搞了几个钟头,都不能实现功能。数据是传到了前台,可是图表总是显示不了,如果用静态数据的话,图表显示成功。上网查了很多资料,这方面的资料也...
  • u011439289
  • u011439289
  • 2014年05月20日 14:30
  • 3120

POI 控制 excel 生成图表的方式(二)

主要尝试 vb、jni 调用 excel 的 图表。实现了两种方式。 一 、 java调用 vbs 1、思路:  java 调用 vbs, , vbs调用 excel的宏。 2、具体步骤: ...
  • wei_ya_wen
  • wei_ya_wen
  • 2013年05月26日 12:37
  • 4840
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Chart 图表一例
举报原因:
原因补充:

(最多只允许输入30个字)