原創(chuàng)|使用教程|編輯:王香|2018-07-31 11:42:40.000|閱讀 1592 次
概述:本文詳細(xì)介紹軸控制的實際應(yīng)用
# 界面/圖表報表/文檔/IDE等千款熱門軟控件火熱銷售中 >>
相關(guān)鏈接:
【下載TeeChart.Net最新版本】
TeeChart Pro將自動為用戶定義所有Axis標(biāo)簽,并提供足夠的靈活性來定制用戶可能具有的任何特定要求,TeeChart Pro提供真正的多軸,它們可在設(shè)計或運(yùn)行時使用,并為Axis定義提供無數(shù)可能性和靈活性,本教程將介紹軸控制的應(yīng)用:
將系列數(shù)據(jù)添加到圖表時,會自動設(shè)置軸刻度,用戶可以使用Axis屬性在設(shè)計時或運(yùn)行時更改默認(rèn)值。
 
 
Non date-time data——非日期時間數(shù)據(jù)
添加新系列時,TeeChart編輯器的Axis頁面的Scales部分將顯示Automatic selected和其他灰色選項。顯示的所有值均為數(shù)字。

Date-time data——日期時間數(shù)據(jù)
當(dāng)系列在Series(系列) —>General(常規(guī))頁面上將日期時間設(shè)置為true(對于該軸)時,TeeChart編輯器的軸頁面的“Scales(縮放)”部分將顯示“Auto(自動選定)”和其他灰色選項。值顯示為日期時間值。
自動選擇最佳軸刻度范圍以適合用戶的數(shù)據(jù),在設(shè)計時使用TeeChart編輯器將線系列添加到圖表,然后使用以下代碼添加命令按鈕:
[C#.Net]
Random rnd = new Random(); for(int i = 0; i <= 40; ++i) line1.Add(Convert.ToDouble(i),rnd.Next(100),Color.Red);
[VB.Net]
Dim i As Integer For i = 0 To 40 Line1.Add(Convert.ToDouble(i), Rnd() * 100, Color.Red) Next i
在按鈕中運(yùn)行代碼將繪制一個包含40個隨機(jī)值的Line Series。在設(shè)計時轉(zhuǎn)到TeeChart編輯器,在“Axis(軸)”頁面的“Bottom Axis scales(底軸刻度)”部分中,將“Auto(自動)”設(shè)置為“off'(關(guān)閉)”。現(xiàn)在可以配置軸刻度的最大值和最小值,再次運(yùn)行代碼將顯示值,具體取決于用戶為Axis配置的值,使用鼠標(biāo)右鍵可以滾動查看剩余值。
按代碼設(shè)置軸刻度
更改最大值和最小值代碼:
[C#.Net]
Steema.TeeChart.Axis bottomAxis = tChart1.Axes.Bottom; bottomAxis.Automatic = false; bottomAxis.Maximum = 36; bottomAxis.Minimum = 5;
[VB.Net]
With TChart1.Axes.Bottom .Automatic = False .Maximum = 36 .Minimum = 5 End With
將Axis scale Maximum和Minimum設(shè)置為自動代碼:
[C#.Net]
Steema.TeeChart.Axis bottomAxis = tChart1.Axes.Bottom; bottomAxis.AutomaticMaximum = true; bottomAxis.AutomaticMinimum = false; bottomAxis.Minimum = 5;
[VB.Net]
With TChart1.Axes.Bottom .AutomaticMaximum = True .AutomaticMinimum = False .Minimum = 5 End With
用戶可以自定義軸的間隔,從Axis頁面的Scales部分選擇Desired Increment組合框,并添加所需的增量,代碼:
[C#.Net]
Steema.TeeChart.Axis bottomAxis = tChart1.Axes.Bottom; bottomAxis.Increment = 20;
[VB.Net]
With TChart1.Axes.Bottom .Increment = 20 End With
Datetime data:日期型數(shù)據(jù)
如果數(shù)據(jù)是datetime(可以通過轉(zhuǎn)到Series,General頁面將數(shù)據(jù)設(shè)置為系列的datetime),Chart-> Axis頁面的scale部分將顯示日期時間范圍。從Desired Increment組合框中顯示的范圍中選擇增量,并添加一些樣本數(shù)據(jù):
[C#.Net]
Random rnd = new Random(); 
DateTime today = DateTime.Today; 
TimeSpan oneDay = TimeSpan.FromDays(1); 
line1.XValues.DateTime = true; 
for(int i = 1; i <= 25; ++i)  
     line1.Add(today,rnd.Next(100),Color.Red); 
     today += oneDay; 
[VB.Net]
Dim i As Integer 
Dim Today As DateTime = DateTime.Today 
Dim OneDay As TimeSpan = TimeSpan.FromDays(1) 
Line1.XValues.DateTime = True 
For i = 1 To 25 
     Line1.Add(Today, Rnd() * 100, Color.Red) 
     Today = Today.Add(OneDay) 
Next 
在運(yùn)行時更改增量:
[C#.Net]
Steema.TeeChart.Axis bottomAxis = tChart1.Axes.Bottom; bottomAxis.Increment = Steema.TeeChart.Utils.GetDateTimeStep(Steema.TeeChart.DateTimeSteps.TwoDays);
[VB.Net]
With TChart1.Axes.Bottom .Increment = Steema.TeeChart.Utils.GetDateTimeStep(Steema.TeeChart.DateTimeSteps.TwoDays) End With
有關(guān)日期軸標(biāo)簽的更多信息,請參閱AxisLabels.ExactDateTime屬性。
注意:
更改軸標(biāo)簽頻率時,TeeChart將根據(jù)AxisLabels.Separation屬性的設(shè)置避免標(biāo)簽重疊。這意味著如果標(biāo)簽頻率太高而不適合標(biāo)簽,那么TeeChart將分配“最適合”。更改標(biāo)簽角度和標(biāo)簽分離是2個選項,可幫助用戶安裝所需的標(biāo)簽。
標(biāo)題設(shè)置在Axis頁面的標(biāo)題部分,用戶可以更改Axis的標(biāo)題文本及其字體和陰影屬性,還可以指定標(biāo)題文本的角度和大小。
注意:
更改軸標(biāo)簽頻率時,TeeChart將根據(jù)AxisLabels.Separation屬性的設(shè)置避免標(biāo)簽重疊。這意味著如果標(biāo)簽頻率太高而不適合標(biāo)簽,那么TeeChart將分配“最適合”。更改標(biāo)簽角度和標(biāo)簽分離是2個選項,可幫助用戶安裝所需的標(biāo)簽。
用戶可以將所有標(biāo)準(zhǔn)數(shù)字和日期格式應(yīng)用于Axis標(biāo)簽。“Axis(軸)”頁面的“Labels(標(biāo)簽)”部分包含“Values format(值格式)”字段。如果數(shù)據(jù)是datetime,則字段名稱將更改為“Date time format”,在運(yùn)行時使用代碼:
[C#.Net]
tChart1.Axes.Bottom.Labels.ValueFormat = "#,##0.00;(#,##0.00)";
[VB.Net]
With TChart1.Axes.Bottom .Labels.ValueFormat = "#,##0.00;(#,##0.00)" End With
或者用于日期時間數(shù)據(jù)
[C#.Net]
tChart1.Axes.Bottom.Labels.DateTimeFormat =“dddd / MMMM / yyyy”;
[VB.Net]
With TChart1.Axes.Bottom .Labels.DateTimeFormat = "dddd/MMMM/yyyy" End With
軸標(biāo)簽可以顯示為多行文本而不是單行文本,使用LineSeparator字符()分隔行。
例:
[C#.Net]
bar1.Add(1234,“New”+ Steema.TeeChart.Texts.LineSeparator +“Cars”,Color.Red); bar1.Add(2000,“Old”+ Steema.TeeChart.Texts.LineSeparator +“Bicycles”,Color.Red); tChart1.Panel.MarginBottom = 10;
[VB.Net]
Bar1.Add(1234, "New" + Steema.TeeChart.Texts.LineSeparator + "Cars", Color.Red) Bar1.Add(2000, "Old" + Steema.TeeChart.Texts.LineSeparator + "Bicycles", Color.Red) TChart1.Panel.MarginBottom = 10
DateTime標(biāo)簽的示例:
以下將在兩行文本中顯示底部軸標(biāo)簽,一行顯示月份和日期,第二行顯示年份:
[C#.Net]
bar1.Add(DateTime.Parse(“28/2/2003”),100,Color.Red); bar1.Add(DateTime.Parse(“1/3/2003”),200,Color.Red); bar1.Add(DateTime.Parse(“2/3/2003”),150,Color.Red); bar1.XValues.DateTime = true; tChart1.Axes.Bottom.Labels.DateTimeFormat =“MM / dd hh:mm”; tChart1.Axes.Bottom.Labels.MultiLine = true; tChart1.Panel.MarginBottom = 10;
[VB.Net]
Bar1.Add(DateValue("28/2/2003"), 100, Color.Red) 
Bar1.Add(DateValue("1/3/2003"), 200, Color.Red) 
Bar1.Add(DateValue("2/3/2003"), 150, Color.Red) 
Bar1.XValues.DateTime = True 
TChart1.Axes.Bottom.Labels.DateTimeFormat = "MM/dd hh:mm" 
TChart1.Axes.Bottom.Labels.MultiLine = True 
TChart1.Panel.MarginBottom = 10 
將AxisLabels.MultiLine屬性設(shè)置為True將自動在有空格的行中拆分標(biāo)簽,有效地將Label分為兩個:
第一行:'mm / dd'
第二行:'hh:mm'   
在運(yùn)行時始終可以使用OnGetAxisLabel事件以編程方式將標(biāo)簽拆分為多行:
[C#.Net]
private void tChart1_GetAxisLabel(object sender, Steema.TeeChart.TChart.GetAxisLabelEventArgs e) 
         
            string myLabelText = e.LabelText; 
            tChart1.Axes.Bottom.Labels.SplitInLines(ref myLabelText, " "); 
            e.LabelText = myLabelText; 
[VB.Net]
Private Sub TChart1_GetAxisLabel(ByVal sender As Object, ByVal e As Steema.TeeChart.TChart.GetAxisLabelEventArgs) Handles TChart1.GetAxisLabel 
        Dim myLabelText As String 
        myLabelText = e.LabelText 
        TChart1.Axes.Bottom.Labels.SplitInLines(myLabelText, " ") 
        e.LabelText = myLabelText 
End Sub 
在上面的示例中,全局“TeeSplitInLines”過程將“LabelText”中的所有空格轉(zhuǎn)換為行分隔符(返回),軸AxisLabels.Angle屬性也可用于多線軸標(biāo)簽。
Customising Axis labels——自定義軸標(biāo)簽
可以通過使用Axis事件獲得進(jìn)一步的Label控制。事件允許用戶激活/停用/更改任何單個Axis標(biāo)簽。以下示例修改每個Label,將文本短語放在點(diǎn)索引值的前面:
[C#.Net]
private void button1_Click(object sender, System.EventArgs e) 
         
            bar1.FillSampleValues(20); 
            tChart1.Axes.Bottom.Labels.Style = AxisLabelStyle.Mark; 
         
 
private void tChart1_GetAxisLabel(object sender, Steema.TeeChart.TChart.GetAxisLabelEventArgs e) 
         
            if(((Steema.TeeChart.Axis)sender).Equals(tChart1.Axes.Bottom)) 
            e.LabelText = "Period " + Convert.ToString(e.ValueIndex);
[VB.Net]
Private Sub Button1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button1.Click 
        Bar1.FillSampleValues(20) 
        TChart1.Axes.Bottom.Labels.Style = Steema.TeeChart.AxisLabelStyle.Mark 
End Sub 
 
Private Sub TChart1_GetAxisLabel(ByVal sender As Object, ByVal e As Steema.TeeChart.TChart.GetAxisLabelEventArgs) Handles TChart1.GetAxisLabel 
        If CType(sender, Steema.TeeChart.Axis) Is TChart1.Axes.Bottom Then 
            e.LabelText = "Period " & e.ValueIndex 
        End If 
End Sub 
正常對數(shù)標(biāo)記可以通過以下方式設(shè)置:
[C#.Net]
private void button1_Click(object sender, System.EventArgs e) 
         
            Random rnd = new Random(); 
            Steema.TeeChart.Axis leftAxis = tChart1.Axes.Left; 
            tChart1.Aspect.View3D = false; 
            bar1.Marks.Visible = false; 
            for(int i = 0; i <= 100; ++i) 
            bar1.Add(rnd.Next(100) * i); 
            leftAxis.LogarithmicBase = 10; 
            leftAxis.Logarithmic = true; 
            leftAxis.SetMinMax(0, 10000); 
            leftAxis.Labels.ValueFormat = "#e+0";   
[VB.Net]
Private Sub Button1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button1.Click 
        Dim i As Integer 
        TChart1.Aspect.View3D = False 
        Bar1.Marks.Visible = False 
        For i = 0 To 10000 Step 100 
            Bar1.Add(Rnd() * i) 
        Next 
        With TChart1.Axes.Left 
            .LogarithmicBase = 10 
            .Logarithmic = True 
            .SetMinMax(0, 10000) 
            .Labels.ValueFormat = "#e+0" ' exponential format  
        End With 
End Sub 
標(biāo)簽將根據(jù)對數(shù)基數(shù)(默認(rèn)為10)進(jìn)行設(shè)置,因此,在這種情況下給出標(biāo)簽為1,10,100,1000,10000。

有3種勾選類型和2種類型的網(wǎng)格,用戶可以更改每個刻度和網(wǎng)格類型的長度,寬度和顏色。可以通過“Ticks”選項卡對Ticks及其關(guān)聯(lián)的Grid和Inner Ticks進(jìn)行更改; 可以通過“Minor(次要)”選項卡更改次要刻度及其關(guān)聯(lián)的網(wǎng)格。TeeChart Pro版本5的新功能是能夠更改寬度大于1(默認(rèn)值)的刻度和網(wǎng)格樣式。
[C#.Net]
Steema.TeeChart.Axis bottomAxis = tChart1.Axes.Bottom; bottomAxis.Ticks.Length = 7; bottomAxis.Ticks.Color = Color.Green; bottomAxis.MinorTickCount = 10;
[VB.Net]
With TChart1.Axes.Bottom .Ticks.Length = 7 .Ticks.Color = Color.Green .MinorTickCount = 10 End With
Axis position——軸位置 
軸具有修改每個軸所在位置的屬性。在此示例中,軸移動了圖表寬度的50%,因此它顯示在圖表中心:
[C#.Net]
Steema.TeeChart.Axis bottomAxis = tChart1.Axes.Bottom; bottomAxis.PositionUnits = PositionUnits.Percent; bottomAxis. RelativePosition = 50
[VB.Net]
With TChart1.Axes.Bottom .PositionUnits = PositionUnits.Percent .RelativePosition = 50 End With
TeeChart提供5個與數(shù)據(jù)相關(guān)的軸系列:Left(左),Top(上),Bottom(下),Right(右)和 Depth(深)。向圖表添加新系列時,用戶可以定義系列應(yīng)與哪些軸相關(guān)(轉(zhuǎn)到“Series(系列)”選項卡“General(常規(guī))”頁面),可以使用Axis Customdraw方法在圖表上的任何位置重復(fù)前4軸中的任何一個(或全部)。此方法會復(fù)制Axis,但不會添加新的自定義軸。
例:
[C#.Net]
private void Form1_Load(object sender, System.EventArgs e) 
         
            Random Rnd = new Random(); 
            tChart1.Aspect.View3D = false; 
            tChart1.Panel.Gradient.Visible = true; 
            for(int t = 0; t <= 20; ++t) 
            line1.Add(t, ((Rnd.Next(100)) + 1) - ((Rnd.Next(70)) + 1), Color.Red); 
 
         
 
private void line1_BeforeDrawValues(object sender, Steema.TeeChart.Drawing.Graphics3D g) 
         
            int posAxis = 0; 
            if(tChart1.Axes.Left.Maximum > 0) 
             
                tChart1.Axes.Left.Draw(g.ChartXCenter - 10,g.ChartXCenter - 20,g.ChartXCenter,true); 
                posAxis = tChart1.Axes.Left.CalcYPosValue(10); 
                tChart1.Axes.Bottom.Draw(posAxis + 10, posAxis + 40, posAxis, true); 
[VB.Net]
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load 
        Dim t As Integer 
        TChart1.Aspect.View3D = False 
        TChart1.Panel.Gradient.Visible = True 
        For t = 0 To 20 
            Line1.Add(t, ((Rnd() * 100) + 1) - ((Rnd() * 70) + 1), Color.Red) 
        Next 
    End Sub 
 
Private Sub Line1_BeforeDrawValues(ByVal sender As Object, ByVal g As Steema.TeeChart.Drawing.Graphics3D) Handles Line1.BeforeDrawValues 
        Dim posAxis As Integer 
        If TChart1.Axes.Left.Maximum > 0 Then 
            TChart1.Axes.Left.Draw(g.ChartXCenter - 10, g.ChartXCenter - 20, g.ChartXCenter, True) 
            posAxis = TChart1.Axes.Left.CalcYPosValue(10) 
            TChart1.Axes.Bottom.Draw(posAxis + 10, posAxis + 40, posAxis, True) 
        End If 
End Sub
上面的示例代碼將生成以下圖像:

在此示例中,TeeChart將繪制新軸,一個水平,一個垂直位于圖表的中心。當(dāng)用戶滾動圖表(用鼠標(biāo)右鍵拖動)時,新的垂直軸將始終保持在圖表的中心,新的水平軸將垂直滾動上下移動,新軸是默認(rèn)軸的精確副本。
與PositionPercent和拉伸屬性一起,可以使無限軸浮動到圖表上的任何位置。滾動,縮放和軸命中檢測也適用于自定義創(chuàng)建的軸。現(xiàn)在可以通過TeeChart Editor在設(shè)計時創(chuàng)建額外的軸,也可以在運(yùn)行時通過幾行代碼創(chuàng)建額外的軸:
通過圖表編輯器

TeeChart為用戶提供在設(shè)計時創(chuàng)建自定義軸的功能,使其能夠以TeeChart的T恤文件格式保存。打開圖表編輯器并單擊“Axis(軸)”選項卡,然后選擇“+”按鈕以添加自定義軸。然后選擇“Position(位置)”選項卡,確保突出顯示新的自定義軸。此頁面上的“ Horizontal(水平)”復(fù)選框允許用戶將新的自定義軸定義為水平軸或?qū)⑵浔A魹槟J(rèn)垂直軸。如上所述,此頁面的其余部分和Axis頁面中的其他選項卡可用于更改自定義軸的比例,增量,標(biāo)題,標(biāo)簽,刻度,次刻度和位置。要將此新的自定義軸與所需的數(shù)據(jù)系列相關(guān)聯(lián),請選擇“Series(系列)”選項卡,然后轉(zhuǎn)到“General(常規(guī))”頁面,其中下拉組合框“Horizontal Axis(水平軸)”和“Vertical Axis(垂直軸)”將允許用戶選擇新的自定義軸,具體取決于用戶之前是將其定義為垂直軸還是水平軸。
代碼:
[C#.Net]
private void Form1_Load(object sender, System.EventArgs e) 
         
            Line line1 = new Line(); 
            Line line2 = new Line();  
 
            tChart1.Aspect.View3D = false; 
            tChart1.Panel.Gradient.Visible = true; 
            tChart1.Header.Text = "TeeChart Multiple Axes"; 
            tChart1.Series.Add(line1); 
            tChart1.Series.Add(line2); 
 
            for(int t = 0; t <= 10; ++t) 
             
                line1.Add(Convert.ToDouble(t), Convert.ToDouble(10 + t), Color.Red); 
                if(t > 1) 
                line2.Add(Convert.ToDouble(t), Convert.ToDouble(t), Color.Green); 
             
 
            Axis leftAxis = tChart1.Axes.Left; 
 
            leftAxis.StartPosition = 0; 
            leftAxis.EndPosition = 50; 
            leftAxis.AxisPen.Color = Color.Red; 
            leftAxis.Title.Font.Color = Color.Red; 
            leftAxis.Title.Font.Bold = true; 
            leftAxis.Title.Text = "1st Left Axis"; 
 
 
            Axis axis1 = new Axis(false, false, tChart1.Chart); 
 
            tChart1.Axes.Custom.Add(axis1); 
 
            line2.CustomVertAxis = axis1; 
 
            axis1.StartPosition = 50; 
            axis1.EndPosition = 100; 
            axis1.AxisPen.Color = Color.Green; 
            axis1.Title.Font.Color = Color.Green; 
            axis1.Title.Font.Bold = true; 
            axis1.Title.Text = "Extra Axis"; 
            axis1.PositionUnits= PositionUnits.Percent; 
            axis1.RelativePosition = 20; 					本站文章除注明轉(zhuǎn)載外,均為本站原創(chuàng)或翻譯。歡迎任何形式的轉(zhuǎn)載,但請務(wù)必注明出處、不得修改原文相關(guān)鏈接,如果存在內(nèi)容上的異議請郵件反饋至chenjj@ke049m.cn