TeeChart Pro .Net汉化教程九:缩放和滚动图表

原创|其它|编辑:郝浩|2012-07-09 21:38:30.000|阅读 1934 次

概述:要在数据密集的图表中选中特定的数据,缩放和滚动是非常有用的功能。 本文主要介绍如何利用鼠标和代码方式来滚动和缩放teechart图表。

# 界面/图表报表/文档/IDE等千款热门软控件火热销售中 >>

要在数据密集的图表中选中特定的数据,缩放和滚动是非常有用的功能。 本文主要介绍如何利用鼠标和代码方式来滚动和缩放teechart图表。

如何使用鼠标进行图表的缩放与滚动

缩放

如果要放大一个图表,可在你想放大的区域左上角一直按着鼠标左键,在缩放区域的右下角拖动矩形框。松开鼠标时,图表中您所选定的区域将被刷新。

如果要撤销缩放,可在图表区域的任何区域一直按着鼠标左键向左上角拖动。松开鼠标后图表就会恢复到原始的图表。

滚动

要滚动一张图表,可以一直按着鼠标右键,向您想要滚动的方向拖动鼠标。当您松开鼠标后图表就会停留在一个新的位置。

如果要取消滚动,可在图表的任何区域一直按着鼠标左键向左上角拖动。松开鼠标后图表就会恢复到原始的图表。

如何通过代码来进行图表的缩放与滚动

缩放

缩放功能是默认可用的。通过Zoom.Allow属性可禁用缩放功能。参考Zoom类与Zoom相关的所有属性和方法。运用ZoomRect方法来定义要缩放的一个矩形区域。

例如

[C#]
tChart1.Zoom.ZoomRect(new Rectangle(100,100,120,120));
[VB.Net]
TChart1.Zoom.ZoomRect(New Rectangle(100, 100, 120, 120))

ZoomRect中的co-ordinates是在屏幕像素中定义的,在这里0,0是图表左上角的点。

下面的代码可使图表在x轴上的第2和第5点的区域内放大,设定整个图表y轴上最大和最小的缩放比例:

[C#]
int x = points1.CalcXPos(2);
int y = tChart1.Axes.Left.CalcYPosValue(tChart1.Axes.Left.MaxYValue);
int height = tChart1.Axes.Left.CalcYPosValue(tChart1.Axes.Left.MinYValue) - tChart1.Axes.Left.CalcYPosValue(tChart1.Axes.Left.MaxYValue);
int width = points1.CalcXPos(5) - x;
Rectangle r = new Rectangle(x,y,width,height);
tChart1.Zoom.ZoomRect(r);

[VB.Net]
Dim X As Integer = Points1.CalcXPos(2)
Dim Y As Integer = TChart1.Axes.Left.CalcYPosValue(TChart1.Axes.Left.MaxYValue)
Dim Height As Integer = TChart1.Axes.Left.CalcYPosValue(TChart1.Axes.Left.MinYValue) - TChart1.Axes.Left.CalcYPosValue(TChart1.Axes.Left.MaxYValue)
Dim Width As Integer = Points1.CalcXPos(5) - X
Dim R As New Rectangle(X, Y, Width, Height)
TChart1.Zoom.ZoomRect(R)

使用 'Undo' 撤销缩放

TChart1.Zoom.Undo

动态缩放

动态缩放提供了更进一步的缩放功能。取代了由“缩小”到“放大”的一步式操作,您可以将Animated属性设为可用,并为缩放操作定义交错的步骤。一旦Animated属性可用,您就可以通过鼠标或代码手动的进行图表缩放。例如:

[C#]
int x = points1.CalcXPos(2);
int y = tChart1.Axes.Left.CalcYPosValue(tChart1.Axes.Left.MaxYValue);
int height = tChart1.Axes.Left.CalcYPosValue(tChart1.Axes.Left.MinYValue) - tChart1.Axes.Left.CalcYPosValue(tChart1.Axes.Left.MaxYValue);
int width = points1.CalcXPos(5) - x;
Rectangle r = new Rectangle(x,y,width,height);
tChart1.Zoom.Animated = true;
tChart1.Zoom.AnimatedSteps = 100;
tChart1.Zoom.ZoomRect(r);

[VB.Net]
Dim X As Integer = Points1.CalcXPos(2)
Dim Y As Integer = TChart1.Axes.Left.CalcYPosValue(TChart1.Axes.Left.MaxYValue)
Dim Height As Integer = TChart1.Axes.Left.CalcYPosValue(TChart1.Axes.Left.MinYValue) - TChart1.Axes.Left.CalcYPosValue(TChart1.Axes.Left.MaxYValue)
Dim Width As Integer = Points1.CalcXPos(5) - X
Dim R As New Rectangle(X, Y, Width, Height)
TChart1.Zoom.Animated = True
TChart1.Zoom.AnimatedSteps = 100
TChart1.Zoom.ZoomRect(R)

缩放事件

手动或通过代码进行放大操作,将会触发TChart.Zoomed事件。缩小操作将会触发TChart.UndoneZoom事件。

滚动

在所有的方向上进行滚动操作时默认可用的。可使用 Scroll.Allow属性来禁用滚动操作或限制某一个方向上的滚动操作。使用代码来实现滚动最简单的方法是用Axis Scroll方法:

[C#]
tChart1.Axes.Bottom.Scroll(3, false);
[VB.Net]
TChart1.Axes.Bottom.Scroll(3, False)

它是不赋值的。'False'表示无论TeeChart是否允许在Series值之间的滚动限制。

控制滚动的另外一种方法是通过代码定义Axis滚动的最大和最小值:

[C#]
private void Form1_Load(object sender, System.EventArgs e) {
        int range = Convert.ToInt32(bar1.XValues.Maximum - bar1.XValues.Minimum / 2);
        bar1.FillSampleValues(20);
        tChart1.Panning.Allow = ScrollModes.None;
        hScrollBar1.Value = range;
        hScrollBar1.Minimum = range - 50;
        hScrollBar1.Maximum = range + 50;
}
    
private void hScrollBar1_Scroll(object sender, System.Windows.Forms.ScrollEventArgs e) {
        tChart1.Axes.Bottom.Automatic = false;
        tChart1.Axes.Bottom.Minimum = e.NewValue;
        tChart1.Axes.Bottom.Maximum = e.NewValue + bar1.Count;
}

[VB.Net]
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
            Dim Range As Integer = Bar1.XValues.Maximum - Bar1.XValues.Minimum / 2
            Bar1.FillSampleValues(20)
            TChart1.Panning.Allow = Steema.TeeChart.ScrollModes.None
            HScrollBar1.Value = Range
            HScrollBar1.Minimum = Range - 50
            HScrollBar1.Maximum = Range + 50
End Sub

Private Sub HScrollBar1_Scroll(ByVal sender As Object, ByVal e As System.Windows.Forms.ScrollEventArgs) Handles HScrollBar1.Scroll
            TChart1.Axes.Bottom.Automatic = False
            TChart1.Axes.Bottom.Minimum = e.NewValue
            TChart1.Axes.Bottom.Maximum = e.NewValue + Bar1.Count
End Sub



(慧都控件网版权所有,转载请注明出处,否则追究法律责任)
标签:

本站文章除注明转载外,均为本站原创或翻译。欢迎任何形式的转载,但请务必注明出处、不得修改原文相关链接,如果存在内容上的异议请邮件反馈至chenjj@evget.com

文章转载自:慧都控件网

为你推荐

  • 推荐视频
  • 推荐活动
  • 推荐产品
  • 推荐文章
  • 慧都慧问
扫码咨询


添加微信 立即咨询

电话咨询

客服热线
023-68661681

TOP