2009年3月31日星期二

3月31日

6:30起床跑步、读英语到7:30;
上午8:30-11:00去学院机房做毕设,主要学习了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越小则生成的文件越小,但图像质量也随之下降。

Y轴数据,X轴时间。
1.4 [问题极其使用技巧] 1.4.1 TChart中如何实现只有Y轴的放大与缩小功能? 设置BottomAxis或者LeftAxis的Automatic:=false并同时设置Minimum,Maximum属性 1.4.2 如何固定TChart中的坐标,不使TChart中的坐标跟随Series的变化而变化? //设置底座标 with myChart.BottomAxis do begin Automatic:=false; Minimum:=0; LabelStyle := talText; end; //设置左坐标 with myChart.LeftAxis do begin Automatic:=false; Minimum:=0; Title.Angle:=270; Title.Font:=Self.Font; Title.Font.Charset:=ANSI_CHARSET; Title.Font.Name:='@宋体'; Grid.Visible := False; end; //设置右坐标 with myChart.RightAxis do 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 ; {In Bubble Series} BubbleSeries1.RadiusValues.Value[ 8 ] := 8.1 ; {In Pie Series} PieSeries1.PieValues.Value[ 3 ] := 111 ; 1.4.5 如果横坐标是时间(日期),如何进行设置? {First, you need to set the DateTime property to True in the desired X and/or Y values list.} LineSeries1.XValues.DateTime := True ; {Second, use the same above described methods, but give the values as Date, Time or DateTime values} 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 Horizontal bar (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 (TGanttSeries) 1.5.11 Sharp (TChartShape) 1.6 [TChart的实时绘制] 实时绘制对机器性能要求比较高,因此我们在编程的时候要注意下面几个方面: ü 使用2D图形 ü 是Chart尽可能包含少的点 ü 如果需要,可以移除(remove)chart的legend(?????)和Title ü 使用默认的字体和字体大小 ü 使用FastLineSeries ü 使用实体(solid)画笔和画刷格式 ü 尽量避免使用圆形和环行bar样式 ü 不要使用背景图片和渐变效果样式 ü 把Chart的BevelInner和BevelOUter属性设置为bcNone ü 如果需要,把TChart的AxisVisible属性设置为False ü 把BufferedDisplay设置为false可以加速chart的重绘 1.7 [Scrolling] TChart有4中scroll选择(AllowPanning属性),分别是 不允许Scroll ( pmNone) ; 水平Scroll (pmHorizontal) ; 垂直Scroll (pmVertical) ; 水平和垂直Scroll (pmBoth) Procedure Scroll(Const Offset:Double; CheckLimits:Boolean); 例子如下: Chart1.BottomAxis.Scroll( 1000, True );这段代码也等同于 With Chart1.BottomAxis do Begin Automatic:=false; SetMinMax( Minimum0+1000, Maximum+1000 ); End; 1.8 [TChart中的全局变量] ü TeeScrollMouseButton := mbRight;设置鼠标右键为TChart滚动键(默认) ü TeeScrollKeyShift := [ ssCtrl ]; 要按住Control键才可以使Scroll滚动 1.9 [TChartSerries使用技巧] 1.9.1 运行时候创建一个Serries, 三种方法: 1.Var MySeries : TBarSeries ; MySeries := TBarSeries.Create( Self ); MySeries.ParentChart := Chart1 ; 2.Chart1.AddSeries( TBarSeries.Create( Self ) ); 3.Var MyClass : TChartSeriesClass; MyClass := TBarSeries ; Chart1.AddSeries( MyClass.Create( Self ) ); 1.9.2 获得TChart中的Serries数组,也有三种方法 1.MySeries := Chart1.SeriesList [ 0 ] 2.MySeries := Chart1.Series [ 0 ] 3.MySeries := Chart1 [ 0 ] 1.9.3 SerriesCount属性获得SeriesList中Series的个数 1.9.4 隐藏TChart中的Series有三种方法,但是效果不等价 1. Series1.Active:=False; 仅仅隐藏,当设置为true的时候还可以显示出来 2. Series1.ParentChart:=nil ; 隐藏,重新设置ParentChart为TChart时候可以显示 3. Series1.Free; 删除了Series. 不可以恢复 1.9.5 TChart中的数据排序 With Series1 do begin YValues.Order:=loAscending; YValues.Sort; Repaint; end; Ø 定位一个点(Loacate a point) Series1.XValues.Locate(123); Ø XValue和YValue都拥有的属性Total , TotalABS , MaxValue , MinValue.

下午,开了个会。关于学习实践科学发展观专题的。作为学生应该提高自己的核心竞争力:包括学习能力、实践能力和创新能力。

2009年3月29日星期日

3月29日

早上6:30起床去操场跑步,跑到7:30回宿舍。
吃过早饭去了研楼,上了一上午自习。看了本英语杂志。复习了点VB,毕设要用。
下午去了珠江路重装电脑,把Vista改成了XP。
晚上又把一些软件装了一下,改了改实习报告。
晚上9:30又到操场跑了两圈。