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

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 2019资源合集

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值