Teechart图表应用技术详解—第三章之图表的放大和滚动
Steema公司和慧都科技针对中国市场联合推出中文版TeeChart for .NET图表控件,一共汉化2000个词条(17000个单词),汉化文档35000个单词,包括控件设计时与运行时的界面汉化以及控件使用向导文档的汉化,总汉化90%以上!
TeeChart for .NET中文版让您在使用和学习上没有任何语言障碍,至少可以节省30%的开发时间。TeeChart for .NET中文版具有易上手,使用方便,稳定性好,性价比高,价格优惠等优势,并且针对Web应用提供无限制服务器分发授权方式,非常有利于产品集成。
图表的放大和滚动
图表的放大和滚动就是将坐标设置为希望的刻度。当滚动和放大后,序列上的所有点将在新的位置重绘。注意:TPieSeries序列不支持放大与滚动操作。
放大(Zoom)
图表放大通常是由用户与鼠标拖拉交互实现的。图表的Zoom类的Zoom属性控制用户是否通过鼠标拖拽进行放大,默认状态为true,即:
Chart1.Zoom. Allow: =True;
用户可通过鼠标拖拽确定一个矩形区域,以看到图表的细节。拖拽方向与轴方向一致为放大,相反为恢复(不放大)。可以设定使用哪个鼠标按钮或哪个键按下拖拽矩形区域,默认为鼠标的左按钮,也可以通过代码修改拖拽的默认键:
Chart1. Zoom. MouseButton: = mbMiddle;
一旦用户释放按钮,图表将在放大区域重新显示。
动画放大( Animate Zoom)
所谓动画放大实际是将图表放大过程按某种要求显示出来。下列代码激活动画放大:
Chart1. Zoom. Animated: =True;
设置 AnimatedZoom Steps属性确定动画的中间帧数:
Chart1. Zoom. AnimatedSteps: =7;
还可以使用全局变量 AnimatedZoom Factor放大因子确定如何线性动画。因子范围从1到n:
AnimatedZoomFactor: =2.0
使用代码进行放大( Zoom By Code)
可以通过调用图表方法进行图表的放大与缩小。ZoomRect调节显示矩形区域TRect坐标刻度,矩形区域由屏幕的像素坐标表示。矩形区域在Chart.ChartRect之内将执行放大操作,否则执行缩小操作。
Chart1. ZoomRect(Rect(100, 100, 200, 200));
ZoomPercent设定图表放大比例,例如设放大比例为110%:
Chart1. ZoomPercent(110);
取消放大:
Chart1. ZoomPercent(100);
恢复显示( Undoing Zoom)
Undozoom方法技序列的最大值和最小值重新设置坐标刻度,即:
Chart1. UndoZoom;
这时将显示所有序列的点,取消以前使用鼠标或代码进行的放大、缩小操作。
注意:如果需要在取消放大或缩小操作后按指定值设定坐标刻度,可在图表的 OnUndoZoom事件中进行。根据图表的四个坐标轴是否自动Zoomed属性返回一个逻辑值,如:
If not Chart1. Zoomed then Chart1. ZoamPercent(150 ); //如果Chart1. Zoomed是 //False,则放大
放大事件( Zoom Events)
当手动或程序方式放大图表时就触发 OnZoom事件:
procedure TForm1. Chart1Zoom(Sender: TObject); begin Button1.Visible:=True;//使不放大按钮可见, Button1.Caption:=‘不放大'; end;
当由鼠标或代码取消放大时便触发OnUndoZoom事件。
滚动( Scrolling)
滚动与放大很类似,当坐标刻度增加或减少时整个图表被重新绘制,在新的位置显示序列的点。图表的AllowPanning属性控制拖拽鼠标使图表滚动,它的取值范围如下:
pmNoneNo:允许滚动。
pmHorizontal:允许水平方向滚动。
pmVertical:允许垂直方向滚动。
pmBoth:允许垂直、水平方向滚动。
例如:
Chart1. AllowPanning :=pmNone; //不允许滚动 同放大一样,下面的代码设定使用鼠标右键进行滚动: Chart1. ScrollMouseButton := mbRight; //使用鼠标右键按钮滾动 TeeScrollKeyShift:[ ssCtrl ];//全局变量,按下Ctr1键开始滚动
也可使用代码滚动图表
Procedure Scroll(Const Offset: Double; CheckLimits: Boolean);
例如:
Chart1. BottomAxis Scroll( 1000, True );
上述代码使BottomAxis刻度按1000增加,与下列代码是等效的:
with Chart1. BottomAxis do SetMinMax(Minimum + 1000, Maximum+1000);
并且设置BottomAxis轴的自动属性Automatic为 false。这时,图表重新绘制,而且水平轴滚动到左边刻度为1000的位置。
滚动事件( Scroll Event)
图表的OnScroll事件在用户每次手动滚动图表时触发。例如:
procedure TForm1. Chart1Scroll(Sender: Tobject); begin Label1.Caption:=?个图表被滚动!'; end;
控制滚动( Controlling Scroll)
OnAllowScroll事件可以被用来接受或拒绝图表滚动。例如:
procedure TForm1. Chart1AllowScroll(Sender: TChartAxis; var AMin, AMax: Double; var AllowScroll: Boolean); begin if Sender= Chart1. BottomAxis then if AMax >1000 then AllowScroll : =False; end;
以上代码是当用户设定BottomAxis轴的最大值大于1000时拒绝滚动。同理,对于时间轴也可采用下述方法进行:
if Sender=Chart1.BottomAxis then if Amax>EncodeDate(2000,12,31)then AllowScroll:=False;
键盘滚动(Keyboard Scrolling)
当设置窗体的可以KeyPreview属性为true,可以使用方向键滚动。在Keydown事件中根据按下的键调用轴的Scroll方法进行滚动。
下一节我们将会介绍第三章图表与序列的操作维护:如何在图表上自行绘制。如果有对Teechart图表感兴趣的朋友,可以多多关注本教程,并且欢迎在评论区留言。
相关资料推荐:
上一章:函数的操作
现TeeChart for .NET,TeeChart for JavaScript/HTML5,TeeChart for Xamarin.Android等均已加入在线订购,现在抢购可立享优惠!
关注慧聚IT微信公众号???,了解产品的最新动态及最新资讯。