teechart属性设置.docx
- 文档编号:9948671
- 上传时间:2023-02-07
- 格式:DOCX
- 页数:19
- 大小:29.73KB
teechart属性设置.docx
《teechart属性设置.docx》由会员分享,可在线阅读,更多相关《teechart属性设置.docx(19页珍藏版)》请在冰豆网上搜索。
teechart属性设置
设计背景
基于服务器/浏览器架构的解决方案在越来越多的领域得到应用。
使用ASP脚本,我们可以方便地访问各种数据库,生成与用户交互的动态页面。
一般情况下,由浏览器解释要显示的结果,其中统计数据的显示结果一般采用HTML表格形式。
笔者在铁路车站Intranet系统的开发过程中,遇到要把数据库中的统计结果用统计图表(柱状图、折线图、饼图等)方式输出的问题。
因为统计图表在美观和易于理解等方面有着表格所不具备的优越性,所以这个问题具有一定的普遍性。
目前,针对这个问题,主要有3种可行的解决方案:
1.在浏览器端安装使用图表控件如MsChart等。
这样做的缺点是在客户端要安装和注册ActiveX控件,操作较为复杂,并且把客户端系统限制在Windows的范围内。
2.使用JavaApplet显示图形。
这样做开发难度较高,需要针对具体的应用要求编制Java绘图程序。
3.在服务器端使用控件动态生成图形文件(JPEG格式),此方法可以适用于任何流行的客户端浏览器。
本文讨论第3种方案,使用的控件是TeeChartProActiveX4.0版(目前最新版本为8.0(最新版本下载),另外TeeChart还有TeeChartfor.NET、TeeChartProVCL/CLX、TeeChartProforJava以及TeeChartforPHP)。
TeeChart控件应用
TeeChartProActiveX是西班牙SteemaSL公司开发的图表类控件,主要用来生成各种复杂的图表。
熟悉Delphi和C++Builder的编程人员对它不会陌生,因为在Delphi和C++Builder里包括了TeeChart的VCL版本。
本文将详细介绍TeeChart控件应用方法,本文使用的是TeeChartProActiveX4.0,它的试用版可以点击这里下载。
TeeChartProActiveX4.0的主要特性如下:
图表的坐标轴
Bar,Bar3D以及HorizontalBar序列
TChartListBox
图表主题
TColorBand工具
TCommander
自定义图表调色板
图表中的图例
新的“2DLighting”工具
新的SurfaceNearest工具
新增加的函数
图表编辑器
饼状图和圆环图序列
三维点序列
图表画布
图表序列组
输出格式
AllSerieswith"Pointer"property所有序列都拥有"Pointer"属性
图表的SeriesList属性
TChart1.SeriesList.ClearValues
TeeChartProActiveX4.0的这些特性使得它具有极大的灵活性,并且使用起来非常方便,只要写很少的代码,就可以做出各种复杂、漂亮的图表。
TeeChart图表控件类的属性和方法
TeeChart图表控件的主类是TChart。
TChart中使用了56个类、325个属性、125个方法以及28个事件,这使得TChart具有非常强大的功能。
本文仅简单地介绍其中一些重要类的属性和方法。
TChart.Height:
图表的高度(像素);
TChart.Width:
图表的宽度(像素);
TChart.Header:
图表的题头(Ititles类);
TChart.Series:
序列(Series类的数组);
TChart.Axes:
坐标轴(Iaxes类);
TChart.Legend:
图例(Legend类);
TChart.Panel:
面板(Ipanel类);
TChart.Canvas:
画布(Canvas类)。
Series是要显示的数据的主体。
在一个图表中可以有一个或多个序列,每个序列可以有不同的显示类型,如Line、Bar、Pie等等。
Axes控制图表坐标轴的属性,在缺省的情况下,坐标轴可以自动地根据不同的数据设置好标度范围和间隔,当然也可以手工调整。
Legend控制图表的图例显示。
Legend是图表中的一个长方形的用来显示图例标注的区域。
可以标注Series的名称或者Series中的项目和数值。
Panel可以设置图表的背景。
可以使用渐变的颜色或者图像文件作为整个图表的背景。
Canvas可以让设计者绘制自己的图形。
使用方法和Delphi中的Canvas一样。
有TextOut、LineTo、Arc等各种画图的方法可以调用。
TChart的一些属性实际上是其他类的变量,这些类又具有自己的属性和方法。
如Ititles类又具有Text、Color、Font等属性,我们可以用这些属性来设置题头的文本、颜色和字体。
TeeChart图表控件和其他的图表控件相比,有一个非常重要的特点是TeeChart图表控件可以把图表保存为一个JPEG格式的图形文件。
调用格式如下:
TChart.Export.SaveToJPEGFile(FileName,Gray,Performance,Quality,Width,Height)
其中FileName是JPEG文件的保存路径和文件名,路径应该是操作系统中的绝对路径,而不是IIS中的相对路径,IIS对相应的保存目录应该具有写权限。
Gray指明是否保存为黑白图像。
Performance指明JPEG是生成质量优先还是速度优先。
Quality是一个0到100的整数,100时JPEG质量最好,但文件最大;Quality越小则生成的文件越小,但图像质量也随之下降。
为了解决在多用户并发访问Web的情况下,JPEG文件互相覆盖的问题,我们使用了如下所示的一种JPEG文件的命名机制:
OutputJPEGFile=“Chart”&Session.Sessionid&
Replace(Time,“.”,“”)&“.jpg”
在文件名中包括了Sessionid和当前时间,并使用后台进程定期删除过期文件。
TeeChart控件应用实例
下面是一个简单的ASP程序,从中可以看到TeeChart图表控件在ASP中的使用方法。
程序的运行环境为:
Windows2000Professional、IIS5.0和TeeChartProActiveX.0测试版。
--引入TeeChart常数-->
--METADATANAME=“TeeChartPro4.0
ActiveXControl”TYPE=“TypeLib”
UUID=“{008BBE7B-C096-11D0-B4E3-00A0C901D681}”-->
<%
--建立ActiveXObject-->
SetTChart1=CreateObject(“TeeChart.TChart”)
--设置高度和宽度-->
TChart1.Height=250
TChart1.Width=500
--设置图表题头-->
TChart1.Header.Text.Clear
TChart1.Header.Text.Add“K180次旅客列车日发送人数统计图”
--设置图形背景-->
TChart1.Panel.Gradient.Visible=True
TChart1.Panel.Gradient.StartColor=RGB(200,255,200)
TChart1.Panel.Gradient.EndColor=RGB(255,255,255)
--添加一个序列-->
TChart1.AddSeries(scBar)
TChart1.Series(0).Clear
TChart1.Series(0).ColorEachPoint=True
TChart1.Series(0).Add180,“02/10”,clTeeColor
TChart1.Series(0).Add240,“02/11”,clTeeColor
TChart1.Series(0).Add210,“02/12”,clTeeColor
TChart1.Series(0).Add280,“02/13”,clTeeColor
TChart1.Series(0).Add218,“02/14”,clTeeColor
TChart1.Series(0).Add225,“02/15”,clTeeColor
--保存为JPEG文件-->
TChart1.Export.SaveToJPEGFileserver.mappath(“/teechart”)+“\MyChart.jpg”,False,JPEGBestQuality,85,TChart1.Width,TChart1.Height
%>
实现绘图步骤:
1.加入Teechart控件。
2.创建chart实例并设置相关全局属性(设置chart实例的属性将对所有其他成员,包括所有series实例产生影响)。
3.添加Series序列实例,设置该实例相关属性(设置实例化series的属性作用范围是该series实例,如果为单一series实例,可直接设置其属性而不设置chart实例),并绑定数据源。
常用属性:
(假设控件实例为WebChart1,设置全局属性也可通过实例化chart来设置,即Steema.TeeChart.ChartChart1=WebChart1.Chart;在此不考虑这种)
WebChart1.AutoPostback=false;//自动回发(默认)
WebChart1.GetChartFile="GetChart.aspx";
//处理数据页(默认),GetChart.aspx内容后附
WebChart1.Width=400;//显示宽度
WebChart1.Height=300;//显示高度
WebChart1.PictureFormat=Steema.TeeChart.Export.PictureFormats.Bitmap;
//显示图片的格式,默认PNG
WebChart1.TempChart=Steema.TeeChart.Web.TempChartStyle.Session;
//设置保存数据形式,默认File,一般选session。
Chart.Aspect(外观属性)
WebChart1.Chart.Aspect.View3D=false;//取消3D表示
Chart.Header(显示头)
WebChart1.Chart.Header.Visible=false;//是否显示头文字
WebChart1.Chart.Header.Text="顶部显示文字";
Chart.Axes(坐标轴)
WebChart1.Chart.Axes.Left.Title.Text="纵坐标文字显示";
WebChart1.Chart.Axes.Bottom.Title.Text="横坐标文字显示";
Chart.Legend(图例)
WebChart1.Chart.Legend.LegendStyle=Steema.TeeChart.LegendStyles.Auto;
//图例显示的样式,包含一下方面:
默认auto
WebChart1.Chart.Legend.Alignment=Steema.TeeChart.LegendAlignments.Bottom;
//图例显示位置(显示线条颜色,线条代表对象)
WebChart1.Chart.Legend.Visible=false;//是否显示图例
WebChart1.Chart.Legend.Font.Color=System.Drawing.Color.Black;
//图例文本显示颜色
Chart.Panel(底板设置)
WebChart1.Chart.Panel.Color=System.Drawing.Color.AliceBlue;
//底板颜色(似乎不管用)
实例化序列:
Steema.TeeChart.Styles.Lineline1=newSteema.TeeChart.Styles.Line();
WebChart1.Chart.Series.Add(line);
//实例化线,也可以如下一句完成:
Steema.TeeChart.Styles.Lineline1=
newSteema.TeeChart.Styles.Line(WebChart1.Chart);
line1.YValues.DataMember=DS.Tables[0].Columns[2].ToString();
//设置比较刻度(纵坐标)
line1.LabelMember=DS.Tables[0].Columns[1].ToString();
//设置成员标签(横坐标)
line.Title="111111";
//设置其标题,可以在图例上显示此标题,多线时有用
line.Color=System.Drawing.Color.Red;
//设置线条颜色,可不设置,默认
line1.DataSource=DS.Tables[0];
WebChart1.DataBind();
//数据绑定
TChart使用经验小结[喝小酒的网摘]
1、问题:
通过Addxy方法给TChart添加标记(Mark)时,发现在TChart的横坐标会随着Mark而变化,后来发现通过以下方法可避免这种情况:
双击TChart,点击Axis->toporbottom->labels,在styles中将labels的形式改为Value即可!
2、几个有用的属性:
图表上的每个点都是有索引的,就象一个数组一样,在OnClickSeries事件中有个ValueIndex属性,该属性可以得到鼠标所点击的点的索引值(必须将Series的Point设置为可见,鼠标点击到那个点时才可以触发该事件)。
xValue[index]、yValue[index]分别表示图表的索引为index的横纵坐标值,用这两个属性可以读取和设置索引为index的点的值,注意:
不要用xValues和yValues,这两个属性也可以达到同样的目的,但是速度非常的慢。
因为后两个在进行操作的时候可能要遍历整个图表上的值(个人观点) 在MouseDown,MouseMove,Mouseup中,可以利用xScreentoValue(x),yScreentoValue(y)得到鼠标当时所在点对应在图表上的横纵坐标值。
e.g......private
Nowindex:
Integer;
Cantuo:
boolean;........procedureTfrmMain.Chart1ClickSeries(Sender:
TCustomChart;
Series:
TChartSeries;ValueIndex:
Integer;Button:
TMouseButton;
Shift:
TShiftState;X,Y:
Integer);
begin
NowIndex:
=ValueIndex;
end;procedureTfrmMain.Chart1MouseDown(Sender:
TObject;Button:
TMouseButton;
Shift:
TShiftState;X,Y:
Integer);
begin
Cantuo:
=true;end;procedureTfrmMain.Chart1MouseUp(Sender:
TObject;Button:
TMouseButton;
Shift:
TShiftState;X,Y:
Integer);
begin
Cantuo:
=false;
end;procedureTfrmMain.Chart1MouseMove(Sender:
TObject;Shift:
TShiftState;X,
Y:
Integer);
begin
ifCantuothen
begin
Series1.yValue[NowIndex]:
= Series1.yScreenToValue(y);
end;
end;这里即实现了可以在图表中拖动某一个点使其在纵轴上变化位置 Tchart分析报告 1 Tchart分析报告1.1 [概述] TChart是delphi里面一个标准的图形显示控件。
它可以静态设计(atdesigntime)也可以动态生成。
1.2 [继承关系]
TObject
TPersistent
TComponent
TControl
TCustomControl
TWedgetControl
TChart
TCustomPanel 1.3 [tips] 1.3.1 ProVersion支持Bezier,Contour,Radar和 point3D 曲线 1.3.2 支持jpeg文件的导出 1.3.3 Chart中的Series 可以连接到Table,Query,RemoteDataset(其他数据集) 1.3.4 TChart里的series的active属性可以实现对已绘制图形的显示或者隐藏 1.3.5 在TChart中,tchartSeries是所有具体series的父类,没有画出什么来的,用一个具体的series类来创建就可以了,比如用TLineSeries、TPieSeries、 TPointSeries、 TPointSeries等等都行 1.3.6 TTeeFunctionComponent可以实现在同一个TChart里面,一个Serries对另一个Serries的统计 1.4 [问题极其使用技巧] 1.4.1 TChart中如何实现只有Y轴的放大与缩小功能?
设置BottomAxis或者LeftAxis的Automatic:
=false并同时设置Minimum,Maximum属性 1.4.2 如何固定TChart中的坐标,不使TChart中的坐标跟随Series的变化而变化?
//设置底座标 withmyChart.BottomAxisdo begin Automatic:
=false; Minimum:
=0; LabelStyle:
=talText; end; //设置左坐标 withmyChart.LeftAxisdo begin Automatic:
=false; Minimum:
=0; Title.Angle:
=270; Title.Font:
=Self.Font; Title.Font.Charset:
=ANSI_CHARSET; Title.Font.Name:
='@宋体'; Grid.Visible:
=False; end; //设置右坐标 withmyChart.RightAxisdo begin Automatic:
=false; Title.Font:
=Self.Font; Title.Font.Charset:
=ANSI_CHARSET; Title.Font.Name:
='@宋体'; Title.Caption:
='累计百分比(%)'; Maximum:
=100; Minimum:
=0; end; 1.4.3 如何删除一个图形中的一个点?
使用Series的delete方法1.4.4 如何修改一个点的X或者Y 值?
LineSeries1.YValue[3]:
=27.1;{InBubbleSeries}BubbleSeries1.RadiusValues.Value[8]:
=8.1;{InPieSeries}PieSeries1.PieValues.Value[3]:
=111; 1.4.5 如果横坐标是时间(日期),如何进行设置?
{First,youneedtosettheDateTimepropertytoTrueinthedesiredXand/orYvalueslist.}LineSeries1.XValues.DateTime:
=True;{Second,usethesameabovedescribedmethods,butgivethevaluesasDate,TimeorDateTimevalues}LineSeries1.AddXY(EncodeDate(1996,1,23),25.4,'Barcelona',clGreen);1.4.6 如何在chart中画出的曲线某个点上标记出该点的值?
Series.Marks.Visible:
=true;Series.Marks.Style:
=smsValue; 1.4.7 如何设置横轴或者纵轴的增长率?
Chart.BottomAxis.Increment:
=DataTimeStep[dtOneHour];Chart.RightAxis.Increment:
=1000; 1.4.8 如何对图象进行缩放?
TChart的ZoomRect或者ZoomPercent方法(Pie图可能不支持缩放) 1.5 [TChart可以绘制的图形]1.5.1 Line(TLineSeries) 1.5.2 FastLine(TFastLineSeries) 相对Line来说,它损耗了某些属性从而来实现快速绘制 1.5.3 Bar(TBarSeries)1.5.4 Horizontalbar(THorizBarSeries) 1.5.5 Area(TAreaSeries)1.5.6 Point(TPointSeries) 1.5.7 Pie(TPieSeries)1.5.8 Arrow(TArrowSeries) 1.5.9 Bubble(TBubbleSeries)1.5.10 Gantt(TGa
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- teechart 属性 设置