logo 【TeeChart Pro ActiveX教程】2018 我也要发布文档

【TeeChart Pro ActiveX教程】(四):轴控制—附加轴和轴事件


下载TeeChart Pro ActiveX最新版本

(一)附加轴

1.1 复制轴

TeeChart提供5个轴与数据系列,Left,Right,Top,Bottom和Depth相关联。向图表添加新系列时,可以定义系列应与哪些轴相关(转到“Series”选项卡“General”页面)。您可以使用Axis Customdraw方法在图表上的任何位置重复前4轴中的任何一个(或全部)。请注意,此方法会复制Axis,但不会添加新的自定义轴。

例:

'fill the Series for this example with random data
Private Sub Command1_Click()
Dim t As Integer
  For t = 0 To 20
    TChart1.Series(0).AddXY t, ((100 * Rnd) + 1) - ((Rnd * 70) + 1), "", vbRed
  Next t
End Sub

'Put this code in the TChart1_OnBeforeDrawSeries() event:
Dim posaxis As Integer
  With TChart1
   If .Axis.Left.Maximum > 0 Then
    'When scrolling or on zoom always keep the gridlines enclosed in the Chart rectangle
    .Canvas.ClipRectangle .Canvas.Left, .Canvas.Top, (.Canvas.Left + .Canvas.Width), _
                          (.Canvas.Top + .Canvas.Height)
    'Always draw the 2nd vertical Axis at the middle point of the Chart
    posaxis = (.Canvas.Left) + (.Canvas.Width * 0.5)
    .Axis.Left.CustomDraw posaxis - 10, posaxis - 20, posaxis, True
    'Draw the 2nd Horizontal axis at the level of "10" on the vertical axis
    posaxis = (.Axis.Left.CalcYPosValue(10))
    .Axis.Bottom.CustomDraw posaxis + 10, posaxis + 40, posaxis, True
    .Canvas.UnClipRectangle
   End If
  End With

teechart

自定义轴

在此示例中,TeeChart将绘制新轴,一个水平,一个垂直位于图表的中心。当您滚动图表(用鼠标右键拖动)时,新的垂直轴将始终保持在图表的中心,新的水平轴将垂直滚动上下移动。新轴是默认轴的精确副本。


1.2 多个自定义轴

与PositionPercent和拉伸属性一起,可以在图表上的任何位置浮动无限轴。滚动,缩放和轴命中检测也适用于自定义创建的轴。现在可以通过图表编辑器在设计时创建额外的轴,也可以在运行时通过几行代码创建额外的轴:

通过图表编辑器

teechart

TeeChart为您提供在设计时创建自定义轴的功能,使其能够以TeeChart的T恤文件格式保存。要实现此目的,请打开图表编辑器并单击Axis选项卡,然后选择“+”按钮添加自定义轴。然后选择“Position”选项卡,确保突出显示新的自定义轴。此页面上的“Horizontal”复选框允许您将新的自定义轴定义为水平轴或将其保留为默认垂直轴。如上所述,此页面的其余部分和Axis页面中的其他选项卡可用于更改自定义轴的比例,增量,标题,标签,刻度,次刻度和位置。要将此新的自定义轴与所需的数据系列相关联,请选择“Series”选项卡,然后转到“General”页面,其中下拉组合框“Horizontal Axis”和“Vertical Axis”将允许您根据先前是否定义选择新的自定义轴它是垂直的或水平的。

通过代码,例:

Private Sub Command1_Click()
TChart1.Series(0).VerticalAxisCustom = TChart1.Axis.AddCustom(False)
'You can modify any property of the new created axes, such as the axis color or axis title
With TChart1.Axis.Custom(0)
    .AxisPen.Color = vbGreen
    .Title.Caption = "Extra axis"
    .Title.Font.Bold = True
    .Title.Angle = 90
    .PositionPercent = 50 'percentage of Chart rectangle
End With
End Sub

然后,您可以使用StartPosition和EndPosition属性将新轴与图表的整体关系定位。

StartPosition=50
EndPosition=100

这些数字表示为图表矩形的百分比,其中0(零)(在垂直轴的情况下)为Top。这些属性可以应用于标准轴,以在图表中创建完全分区的“SubCharts”,例:

With TChart1.Axis.Left
    .StartPosition = 0
    .EndPosition = 50
    .Title.Caption = "1st Left Axis"
    .Title.Font.Bold = True
End With

以上2个编码示例与以下数据结合使用:

For t = 0 To 10
    TChart1.Series(0).AddXY t, 10 + t, "", clTeeColor
    If t > 1 Then
      TChart1.Series(1).AddXY t, t / 2, "", clTeeColor
    End If
Next t

将显示以下图表:

teechart

多轴


(二)轴事件

Axis事件提供运行时灵活性,可以修改Axis标签并在Axis Clicks上显示用户交互性。

OnClickAxis

例:

Private Sub TChart1_OnClickAxis(ByVal Axis As Long, ByVal Button As TeeChart.EMouseButton, ByVal Shift As TeeChart.EShiftState, ByVal X As Long, ByVal Y As Long)
'Shows Axis point clicked when click on Bottom Axis.
If Axis = atBottom Then
  MsgBox "Clicked Bottom Axis at " & TChart1.Axis.Bottom.CalcPosPoint(X)
End If
End Sub

OnGetAxisLabel

可用于修改Axis标签,例:

Private Sub TChart1_OnGetAxisLabel(ByVal aAxis As Long, ByVal SeriesIndex As Long, ByVal ValueIndex As Long, LabelText As String)
'Add following text to Bottom Axis Labels
If aAxis = atBottom Then
  LabelText = "Period " + LabelText
End If
End Sub

OnGetNextAxisLabel

可用于决定应显示哪些轴标签,使用MoreLabels Boolean属性来包含/排除轴标签,例:

Private Sub TChart1_OnGetNextAxisLabel(ByVal Axis As Long, ByVal LabelIndex As Long, LabelValue As Double, MoreLabels As Boolean)
If Axis = atBottom Then
   MoreLabels = True
   'Only label if following cases are true
   Select Case LabelIndex
      Case 0: LabelValue = 11
      Case 1: LabelValue = 19
      Case 2: LabelValue = 23
      Case Else: MoreLabels = False
   End Select
End If
End Sub

购买TeeChart Pro AciveX正版授权,请点击“咨询在线客服”哟!