Teechart 代码 C++ (转) 很全的Teechart应用

VC++6.0使用TeeChart v5.0绘制实时温度曲线及曲线随时间滚动(超详细教程) 其中横坐标为实时的时间。纵坐标为传入的温度,可以是数据库传入的数据,也可以是程序中初始化定义的温度数据。在初始化时程序时TeeChart绘制的曲线上有100个点(我初始化的数据是100个),在程序开始运行后,新的数据点被不断传入,此时整个曲线会向左移动,前面的点会不断消失,曲线看起来在运动。最后再做几个按钮在曲线运动的过程中对曲线进行控制(还记得开局留的那两个按钮吗),即让曲线停止运动和继续运动按钮,最后再弄一个退出按钮,然后对界面进行布局就完成了。再次运行程序,此时惊喜的发现曲线可以进行动态的运动了。 阅读详情
CBuilder/Examples/Teechart有个例子,你可以

研究一下!
我差不多把Tchart控件的每个设置按钮都研究过!
我的图形是要实时的生成不过数据先取进数据库中,要自己画对数实在是麻烦!
下面是我的一段代码(都是改自那个例子):
void __fastcall FormCreate(TObject *Sender);
void __fastcall BBtnZoomInClick(TObject *Sender);
void __fastcall BBtnZoomOutClick(TObject *Sender);
void __fastcall CheckBox3DClick(TObject *Sender);
void __fastcall BitBtnSaveClick(TObject *Sender);
void __fastcall BBtnPrintClick(TObject *Sender);
void __fastcall ADOQuery1AfterOpen(TDataSet *DataSet);
void __fastcall BitBtnUnZoomClick(TObject *Sender);
void __fastcall SBLeftClick(TObject *Sender);
void __fastcall SBRightClick(TObject *Sender);
void __fastcall SBUpClick(TObject *Sender);
void __fastcall SBDownClick(TObject *Sender);
void __fastcall ScrollBar1Change(TObject *Sender);
void __fastcall ScrollBar2Change(TObject *Sender);
void __fastcall ComBFirstChange(TObject *Sender);
void __fastcall ComBLastChange(TObject *Sender);
void __fastcall FormClose(TObject *Sender, TCloseAction &Action);
void __fastcall Chart1MouseMove(TObject *Sender, TShiftState Shift,
int X, int Y);
void __fastcall Series1AfterDrawValues(TObject *Sender);
void __fastcall Chart1Click(TObject *Sender);
private: // User declarations
int OldX;
int OldY;
double tmpX,tmpY;
AnsiString SQLstr, QueryWhere;
int Low, Hight;
TColor CrossHairColor;
TPenStyle CrossHairStyle;
int OldFirstPoint, OldLastPoint;
void ScrollAxis(TChartAxis* Axis, const double Percent);
void HorizScroll(const double Percent);
void VertScroll(const double Percent);
void ExeSQLStr(int start, int end);
void DrawCross(int ax, int ay);

bool SetValued = false;
//---------------------------------------------------------------------------
__fastcall TChart1Form::TChart1Form(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------
void TChart1Form::ScrollAxis(TChartAxis* Axis, const double Percent)
{
double Amount = -((Axis->Maximum-Axis->Minimum)/(100.0/Percent));
Axis->SetMinMax(Axis->Minimum-Amount,Axis->Maximum-Amount);
}
//---------------------------------------------------------------------------
void TChart1Form::HorizScroll(const double Percent)
{
ScrollAxis(Chart1->TopAxis,Percent);
ScrollAxis(Chart1->BottomAxis,Percent);
}
//---------------------------------------------------------------------------
void TChart1Form::VertScroll(const double Percent)
{
ScrollAxis(Chart1->LeftAxis,Percent);
ScrollAxis(Chart1->RightAxis,Percent);
}
//---------------------------------------------------------------------------
void TChart1Form::ExeSQLStr(int start, int end)
{
QueryWhere = " WHERE No >= " + IntToStr(start) + " AND No <= " + IntToStr(end);
ADOQuery1->Close();
ADOQuery1->SQL->Clear();
//QueryWhere = " WHERE No >= " + IntToStr(start) + " AND No <= " + IntToStr(end);
ADOQuery1->SQL->Add(SQLstr);
ADOQuery1->SQL->Add(QueryWhere);
ADOQuery1->Open();
//ADOQuery1->Parameters->Items[0]->Value = start;
//ADOQuery1->Parameters->Items[1]->Value = end;
ADOQuery1->Open();
}
//---------------------------------------------------------------------------
void TChart1Form::DrawCross(int ax, int ay)//画线
{
TColor tmp;
tmp = Chart1->BackColor;
if (tmp == clTeeColor)
tmp = clBtnFace;
Chart1->Canvas->Pen->Color = (TColor)(CrossHairColor ^ ColorToRGB(tmp));
Chart1->Canvas->Pen->Style = CrossHairStyle;
Chart1->Canvas->Pen->Mode = pmXor;
Chart1->Canvas->Pen->Width = 1;
Chart1->Canvas->MoveTo(ax,Chart1->ChartRect.Top-Chart1->Height3D);
Chart1->Canvas->LineTo(ax,Chart1->ChartRect.Bottom-Chart1->Height3D);
Chart1->Canvas->MoveTo(Chart1->ChartRect.Left+Chart1->Width3D,ay);
Chart1->Canvas->LineTo(Chart1->ChartRect.Right+Chart1->Width3D,ay);

/*if ((ax > WhichChart->ChartRect.Left+WhichChart->Width3D) && (ay >WhichChart->ChartRect.Top-WhichChart->Height3D))
{
WhichChart->Canvas->MoveTo(WhichChart->ChartRect.Right+WhichChart->Width3D,WhichChart->ChartRect.Bottom-WhichChart->Height3D);
WhichChart->Canvas->LineTo(ax,ay);
} */
}
//---------------------------------------------------------------------------
void __fastcall TChart1Form::FormCreate(TObject *Sender)
{
Form1->lgQQ_T->RecordCount;
Chart1->AnimatedZoom = true;
Chart1->AnimatedZoomSteps = 5;
ScrollBar1->Enabled = false;
ScrollBar2->Enabled = false;
OldX = -1;
CrossHairColor = clRed;
CrossHairStyle = psSolid;
Chart1->Cursor = crCross;
AnsiString TableName = Form1->lgQQ_T->TableName;
Low = 1;
Hight = Form1->lgQQ_T->RecordCount;
SQLstr += " SELECT No AS ' 编号', sqrtT AS ' T 的开方 ', log10QQ AS ' lg[Q∞-Q(t)] '";
SQLstr += " FROM " + TableName;
QueryWhere = " WHERE No >= " + IntToStr(Low) + " AND No <= " + IntToStr(Hight);
ADOQuery1->Close();
ADOQuery1->SQL->Clear();
ADOQuery1->SQL->Add(SQLstr);
ADOQuery1->SQL->Add(QueryWhere);
ADOQuery1->Open();
}
//-------------------------------------放大

void __fastcall TChart1Form::BBtnZoomInClick(TObject *Sender)
{
Chart1->ZoomPercent(105);
}
//---------------------------------------------------------缩小

void __fastcall TChart1Form::BBtnZoomOutClick(TObject *Sender)
{
Chart1->ZoomPercent(95);
}
//-------------------------------------------------三维  
    
void __fastcall TChart1Form::CheckBox3DClick(TObject *Sender)
{
Chart1->View3D = CheckBox3D->Checked;
if (CheckBox3D->Checked)
{
ScrollBar1->Enabled = true;
ScrollBar2->Enabled = true;
if (dynamic_cast<TPieSeries*>(Chart1->Series[0]))
{
ScrollBar1->Position = Chart1->View3DOptions->Elevation;
}
else
{
ScrollBar1->Position = Chart1->View3DOptions->Rotation;
}
ScrollBar2->Position = Chart1->View3DOptions->Elevation;
}
else
{
ScrollBar1->Enabled = false;
ScrollBar2->Enabled = false;
}
}
//-----------------------------------------------保存图形到文件

void __fastcall TChart1Form::BitBtnSaveClick(TObject *Sender)
{
if (SavePictureDialog1->Execute())
{
Chart1->SaveToMetafile(SavePictureDialog1->FileName);
}
}
//------------------------------打印

void __fastcall TChart1Form::BBtnPrintClick(TObject *Sender)
{
int h, w;
Screen->Cursor = crHourGlass;
try
{
Printer()->BeginDoc();
try
{
Printer()->Canvas->Font->Name = "Arial";
Printer()->Canvas->Font->Size = 10;
Printer()->Canvas->Font->Style.Clear();
//Printer()->Canvas->TextOut(0,0,Edit1->Text);

h = Printer()->PageHeight; // <-- get page height
w = Printer()->PageWidth; // <-- get page width

// And now print the chart component
Chart1->PrintPartial( Rect(
10, // <-- 20% left margin
h / 3 , // <-- 33% top margin
w - 10, // <-- 20% right margin
h - (h / 5))); // <-- 20% bottom margin
Printer()->EndDoc(); // <-- end job and print !!
}
catch (...)
{
// just in case an error happens
Printer()->Abort();
Printer()->EndDoc();
throw; // <-- rethrow the exception !!!
}
}
__finally
{
Screen->Cursor = crDefault; // <-- restore cursor
}
}   
//---------------------------------------------------------------------------

void __fastcall TChart1Form::ADOQuery1AfterOpen(TDataSet *DataSet)
{
if (!SetValued)
{
for (int i = 1; i <= ADOQuery1->RecordCount; i++)
{
ComBFirst->Items->Add(IntToStr(i));
ComBLast->Items->Add(IntToStr(i));
}
ComBFirst->ItemIndex = 0;
OldFirstPoint = ComBFirst->ItemIndex;
ComBLast->ItemIndex = ADOQuery1->RecordCount - 1 ;
OldLastPoint = ComBLast->ItemIndex;
SetValued = true;
}
}
//---------------------------重置缩放

void __fastcall TChart1Form::BitBtnUnZoomClick(TObject *Sender)
{
Chart1->UndoZoom();
}
//---------------------------------左右上下移动

void __fastcall TChart1Form::SBLeftClick(TObject *Sender)
{
HorizScroll(5);
}
//---------------------------------------------------------------------------

void __fastcall TChart1Form::SBRightClick(TObject *Sender)
{
HorizScroll(-5);
}
//---------------------------------------------------------------------------

void __fastcall TChart1Form::SBUpClick(TObject *Sender)
{
VertScroll(-5);
}
//---------------------------------------------------------------------------

void __fastcall TChart1Form::SBDownClick(TObject *Sender)
{
VertScroll(5);
}
//----------------------------------旋转三维图

void __fastcall TChart1Form::ScrollBar1Change(TObject *Sender)
{
if (CheckBox3D->Checked && ScrollBar1->Enabled)
{
Chart1->View3DOptions->Orthogonal = false;
}
if (dynamic_cast<TPieSeries*>(Chart1->Series[0]))
Chart1->View3DOptions->Elevation = ScrollBar1->Position;
else
Chart1->View3DOptions->Rotation = ScrollBar1->Position;
}
//----------------------------------------------------

void __fastcall TChart1Form::ScrollBar2Change(TObject *Sender)
{
if (CheckBox3D->Checked && ScrollBar2->Enabled)
{
Chart1->View3DOptions->Orthogonal = false;
Chart1->View3DOptions->Elevation = ScrollBar2->Position;
}
}
//---------------------------------------------------------------------------

void __fastcall TChart1Form::ComBFirstChange(TObject *Sender)
{
if (ComBFirst->ItemIndex < ComBLast->ItemIndex)
{
CheckBox3D->Checked = false;
Chart1->View3D = false;
Chart1->UndoZoom();
OldFirstPoint = ComBFirst->ItemIndex;
ExeSQLStr(ComBFirst->ItemIndex + 1, ComBLast->ItemIndex + 1);
}
else
{
MessageDlg("开始点大于或等于结束点,请重新选择!",
mtInformation, TMsgDlgButtons() << mbOK, 0);
ComBFirst->ItemIndex = OldFirstPoint;
}
}
//---------------------------------------------------------------------------
void __fastcall TChart1Form::ComBLastChange(TObject *Sender)
{
if (ComBFirst->ItemIndex < ComBLast->ItemIndex)
{
CheckBox3D->Checked = false;
Chart1->View3D = false;
Chart1->UndoZoom();
OldLastPoint = ComBLast->ItemIndex;
ExeSQLStr(ComBFirst->ItemIndex + 1, ComBLast->ItemIndex + 1);
}
else
{
MessageDlg("开始点大于或等于结束点,请重新选择!" ,
mtInformation, TMsgDlgButtons() << mbOK, 0);
ComBLast->ItemIndex = OldLastPoint;
}
}
//---------------------------------------------------------------------------
void __fastcall TChart1Form::FormClose(TObject *Sender,
TCloseAction &Action)
{
SetValued = false;
}
//-------------------------------画线
void __fastcall TChart1Form::Chart1MouseMove(TObject *Sender,
TShiftState Shift, int X, int Y)
{
if (CheckBox1->Checked)
{
if (OldX != -1)
{
DrawCross(OldX,OldY); // draw old crosshair
OldX = -1;
}
if (PtInRect((RECT*)&Chart1->ChartRect, Point(X-Chart1->Width3D,Y+Chart1->Height3D)))
{
DrawCross(X,Y); // draw crosshair at current position
// store old position
OldX = X;
OldY = Y;
// set label text
Series1->GetCursorValues(tmpX,tmpY); // <-- get values under mouse cursor
Label7->Caption = Series1->GetVertAxis->LabelValue(tmpX)
+ " " + Series1->GetHorizAxis->LabelValue(tmpY);
}
}
}
//---------------------------------------------------------------------------

void __fastcall TChart1Form::Series1AfterDrawValues(TObject *Sender)
{
OldX = -1; // Reset old mouse position
}
//------------------------定点
void __fastcall TChart1Form::Chart1Click(TObject *Sender)
{
if (CheckBox1->Checked)
{
CheckBox1->Checked = false;
EditX1->Text = FloatToStr(tmpX);
EditY1->Text = FloatToStr(tmpY);
}
}
//---------------------------------------------------------------------------

TeeChart在VC中实时曲线绘制的应用 一:TeeChart介绍TeeChart Pro是一款提供上百种2D和3D图形风格、40种数学和统计功能、加上无限制的轴和22种调色板组件供选择。提供上百种2D和3D图形风格、40种数学和统计功能、加上无限制的轴和22种调色板组件供您选择。提供上百种2D和3D图形风格、40种数学和统计功能、加上无限制的轴和22种调色板组件供选择,TeeChart还包括一个强大的、完整的编辑对话框,几乎可用于每 阅读详情

相关推荐

TeeChart5的下载安装注册使用一应俱全(VS画表画图)

目录下载安装注册使用 第一次写博客,力求详细,希望与各位共同学习共同进步。 下载 网上有免费的,不过很多有毒,需要一双火眼金睛,如果您嫌麻烦,不妨戳这里下载,赏小弟一点积分哈哈 安装 解压之后点击下图所示的exe文件,输入序列号和密码(我提供的压缩包里) 之后会出现如下结果这就已经获得完整控件了,下面进行注册。 注册 我们将安装步骤里第二张图里的TeeChart5.ocx粘贴到C:\Windows...

pc_idiot的博客 8620

Teechart图表应用技术详解—第三章之图表的放大和滚动

TeeChart for .NET中文版让您在使用和学习上没有任何语言障碍,至少可以节省30%的开发时间。TeeChart for .NET中文版具有易上手,使用方便,稳定性好,性价比高,价格优惠等优势,并且针对Web应用提供无限制服务器分发授权方式,非常有利于产品集成。 图表的放大和滚动 图表的放大和滚动就是将坐标设置为希望的刻度。当滚动和放大后,序列上的所有点将在新的位置重绘。注意:TPieSeries序列不支持放大与滚动操作。 放大(Zoom) 图表放大通常是由用户与鼠标拖拉交互实现的。图表的

yuyuyuyo的博客 1823

TeeChart控件在Visual C++中的应用与实战详解

TeeChart是一款由Steema Software开发的高性能图表控件,支持多种开发平台,其在VC++环境中的应用尤为广泛。控件提供丰富的图表类型(如折线、柱状、饼图等),具备抗锯齿渲染、多图层管理、事件驱动机制等高级图形能力,显著优于传统GDI绘图方式。在Visual Studio中集成TeeChart Pro ActiveX版本时,需先通过命令注册OCX文件,确保COM组件注册成功。随后在MFC项目中通过资源编辑器拖放ActiveX控件,并使用完成控件ID与CTchart。

weixin_35671843的博客 885

图表控件TeeChart干货分享(绘制2D、3D实时曲线---VC++示例源代码--网络首发)

最近接手了一个项目,其中涉及到MFC和实时曲线显示的问题,由于我之前从未接触过此类技术,现学现搞,把其间用到的觉得对初学者有用的东西,总结一下。 尤其是关于TeeChart控件部分,网上资料零碎,且很多不全面,代码难以使用。我苦寻数周在外国一些网站上寻到了一些有用的信息,把相关的可运行的代码示例贴在文中,希望能帮到后来者。     MFC部分: 一、 分割窗体 新建一个单文档的MFC

菜鸟的自留地-mooyang 4万+

Teechart 控件安装与应用全面指南

TeeChart 是一款功能强大的图表绘制控件,广泛应用于数据可视化领域。它提供了丰富多样的图表类型,以及简便易用的接口,使得开发者能够在多种编程环境中快速实现复杂的数据展示。无论你是初学者还是资深开发人员,TeeChart都能帮助你以直观的方式呈现数据,从而增强应用程序的功能性和用户交互体验。TeeChart库支持多种常见和专业的图表类型,帮助开发者以视觉化的方式表达数据。这些图表类型包括但不限于:条形图(Bar Charts):条形图是显示分类数据系列之间比较的常用图表。

weixin_31749299的博客 1857

teechart 源代码

teechart, 源代码对学习teechart图标很有作用的

VS2013 简单MFC应用以及teechart使用方法

VS2013创建MFC应用程序并使用teechart绘制曲线,适合新手,详细得已经不能再详细了吧。

诺有缸的高飞鸟的博客 4924

VC++6.0 使用TeeChart v8.0 绘制多条曲线及圆滑处理.

VC++6.0 使用TeeChart v8.0 绘制多条曲线及圆滑处理. 博客地址http://blog.youkuaiyun.com/zdw86/article/details/71082022

VS2013 TeeChart_v5 MFC C++ 使用手册干货(一)TeeChart的导入与第一个TeeChart图像

奥术大师多

二十三年弃置身 3413

TeeChart ProFS 2023.38 源码版, 本人一直在用,稳定可靠

TeeChart ProFS 2023.38 源码版, 本人一直在用,稳定可靠。

亲测可用 TeeChartpro Source fo delphixe10.4.2 源码与教程demo详解.zip

亲测 delphixe10.4、10.2,在win32下和安卓32和安卓64下可用,其他版本没测,有安装手册,教程详解,以及详解demo的源码。 TeeChartpro拥有数百种2D/3D图形样式 TeeChart Pro VCL/FMX是一款主流的图表制作工具。提供了数百种用于可视化的2D、3D图形样式、56种数学、统计和金融函数,以及不限数量的坐标轴和30种调色板组件。

VS2013 TeeChart_v5 MFC C++ 使用手册干货(三)TeeChart ColorGrid类的简单使用

前面几步安装上面两节进行 1.注册TeeChart5 2.VS添加TeeChart控件并添加变量 3.添加所需类 ColorGrid绘制示例:此方法只适用于TeeChart_v5 VS2010, 在C++ 11.0 之后的版本需要对函数参数做以调整 void CMFCDemoDlg::CreateColorGrid() { //image colorgrid COleSafeArr...

二十三年弃置身 2396

vs c++安装图表插件teechart8操作步骤及64组件

vs c++安装图表插件teechart8操作步骤及64组件vs c++安装图表插件teechart8操作步骤及64组件

VS2013 TeeChart_v5 MFC C++ 使用手册干货(二)TeeChart 实时数据图表

在MFC中,要想用TeeChart实现对数据的实时可视化,则需要借助c++中的定时器。关于定时器的具体内容可以在鸡啄米的MFC教程中查看(感谢大神,同时鸡啄米的MFC入门教程也非常棒!我也是看他入得门): 鸡啄米MFC常用类:c++定时器 那么下面直接上东西了: 首先当然是按照上一篇文章中的方法添加TeeChart以及引入相关类,然后需要两部来实现数据显示的实时化。 一、为MFC添加定时器消息处...

二十三年弃置身 2237

c#使用teechart的demo

c#使用teechart的demo

ccproxy 6.61 注册机(纯绿/傻瓜/真正去除线程限制)

导读:   软件介绍   1、 CCPROXY 6.61 注册机(纯绿/傻瓜/真正去除线程限制)   ***前言,这次的升级官方改动不大,据说只是为了不被某些软件当病毒***   附件包中解压即免安装版,CcREGTOOLFF.exe为注册机。   本人继续向大家隆重推出《CCPROXY6.61哎呀……破解版》   还是那个提示:   在此之前,本人还是那句老话想提示大家,CCPROXY是

i53nd的专栏 1万+

VS + MFC + Teechart 离线安装及输出三维曲线

记录了 VS 、MFC组件和TeeChart 8插件的离线安装流程,以及利用 MFC 模块和 TeeChart 插件制作GUI界面并输出三维曲线的方法。

powpowbing的博客 3588

Zoom AI 技术架构研究:联合式方法与多模态集成

通过 Zoom AI 开放平台,企业可以自定义 AI 模块 (如法律合规审查、客户反馈分析),扩展应用场景。这种开放平台策略使企业能够根据自身需求定制 AI 功能,满足特定业务需求。

shao.bing的专栏 1318
上一篇: 日期正则收藏
下一篇: 找的一些国外TeeChart资料
萱哥老了
博客等级 码龄22年 38粉丝 26原创
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值