原創|其它|編輯:郝浩|2012-11-28 17:32:48.000|閱讀 9316 次
概述:本文對TeeChart 坐標軸的相關問題進行了匯總
# 界面/圖表報表/文檔/IDE等千款熱門軟控件火熱銷售中 >>
在使用 TeeChart 圖表的過程中,經常會遇到坐標軸方面的問題。本文對TeeChart 坐標軸的相關問題進行了匯總:
1、如何實現TeeChart圖表坐標軸的放大與縮小功能?
答:設置BottomAxis或者LeftAxis的Automatic:=false并同時設置Minimum,Maximum屬性。
2、如果Teechart的橫坐標是時間(日期),如何進行設置?
答:首先,你需要將X或者 Y坐標的日期時間DateTime屬性設置為true:
LineSeries1.XValues.DateTime := True ;
其次,使用上面提到的方法,對日期,時間或則日期時間賦值:
LineSeries1.AddXY( EncodeDate( 1996 , 1 , 23 ) , 25.4 , 'Barcelona' , clGreen );
3、如何既固定TeeChart的坐標,又使坐標不跟隨Series的變化而變化?
答:請參考以下代碼:
//設置底座標 with myChart.BottomAxis do begin Automatic:=false; Minimum:=0; LabelStyle := talText; end; //設置左坐標 with myChart.LeftAxis do begin Automatic:=false; Minimum:=0; Title.Angle:=270; Title.Font:=Self.Font; Title.Font.Charset:=ANSI_CHARSET; Title.Font.Name:='@宋體'; Grid.Visible := False; end; //設置右坐標 with myChart.RightAxis do begin Automatic:=false; Title.Font:=Self.Font; Title.Font.Charset:=ANSI_CHARSET; Title.Font.Name:='@宋體'; Title.Caption:='累計百分比(%)'; Maximum:=100; Minimum:=0; end;
4、如何設置TeeChart圖表橫軸或者縱軸的增長率?
答:請參考以下代碼:
Chart.BottomAxis.Increment := DataTimeStep[ dtOneHour ] ; Chart.RightAxis.Increment := 1000;
5、如何對TeeChart自定義坐標軸進行放大縮小?
答:可通過 TeeChart的Zoom屬性進行設置。
6、如何用代碼將TeeChart的y軸分段?
答:請參考以下代碼:
// change the Left axis properties Steema.TeeChart.Axis axis = this.tChart1.Axes.Left; axis.AxisPen.Color = Color.Red; axis.StartPosition = 0; axis.EndPosition = 32; // create custom axes. This can be done at design-time Green = new TeeChart.Axis(tChart1.Chart); this.tChart1.Axes.Custom.Add(Green); Green.AxisPen.Color = Color.Green; Green.StartPosition = 34; Green.EndPosition = 65; Blue = new TeeChart.Axis(tChart1.Chart); this.tChart1.Axes.Custom.Add(Blue); Blue.AxisPen.Color = Color.Blue; Blue.StartPosition = 67; Blue.EndPosition = 100;
7、如何讓TeeChart的X軸顯示時間,Y軸顯示隨機數?
答:請參考以下代碼:
void CTestTeeChartDlg::InitChart() { m_ctrlChart.Series(0).Clear(); m_ctrlChart.GetPage().SetMaxPointsPerPage(1440); COleDateTime CurTime = COleDateTime::GetCurrentTime(); COleDateTime tempTime ; tempTime = CurTime; CurTime.SetTime(0,0,0); CurTime.SetDate(tempTime.GetYear(),tempTime.GetMonth(),tempTime.GetDay()); COleDateTimeSpan tmSpan = COleDateTimeSpan(0,0,1,0); CString csTime ; for(int i=0; i<80; i++) { csTime = CurTime.Format("%H:%M"); float fzVal = float(GetRandom(12000,28000)/100); m_ctrlChart.Series(0).AddXY(i,fzVal,csTime,i); CurTime += tmSpan; } m_ctrlChart.GetAxis().GetLeft().SetMinMax(100, 300); }
8、設置TeeChart底部軸的最小值和最大值時,柱狀圖開始重疊?
答:請參考以下代碼:
你可以改變BarWidthPercent來調整這些柱狀。參考使用如下的代碼:
private void InitializeChart() { tChart1.Aspect.View3D = false; tChart1.Axes.Bottom.Automatic = false; tChart1.Axes.Bottom.Minimum = 0; tChart1.Axes.Bottom.Maximum = 10; Steema.TeeChart.Styles.Bar bar = new Steema.TeeChart.Styles.Bar(tChart1.Chart); bar.Add(1, 1000); bar.Add(2, 1200); bar.Add(3, 900); bar.Add(4, 800); bar.BarWidthPercent = 25; }
9、如何讓TeeChart的Y軸始終顯示在X軸的0上?
答:通過調整Y軸的Position來實現,設置為50%,就可以讓Y軸在X軸的0上。
10、Teechart的Y軸時間用空缺導致空白問題:
用barseries來顯示條型圖,其Y軸和X軸的值分別對應數據庫里的一個浮點數值字段和一個日期字段,現在遇到一個問題,如果數據庫里的日期少一天,圖形顯示出來就會有個空缺,很難看,比如2001-05-01接下來的數據只有2001-05-10的,中間就會缺一大段。把X軸設為非日期型雖然可以解決這個問題,但是GetCursorValues,XScreenTovalue,CalcPosPoint等函數計算出來的屏幕坐標到X軸的值就不對了。
答:解決這個問題的辦法是不要用日期型,把原來是日期型的字段改成整型,比如2001-05-01就改成整型數20010501,他的圖形自然就連續了.GetCursorValues取到的鼠標
數雖然不是已經轉換好的數值,但是經過仔細觀測,其實就是valueindex,只不過他很精確,是個浮點數而已,你只要這樣就能得到x軸真正的值了:
GetcursorValues(Tx,Ty);
Label1.Caption := GetVertAxis.LabelValue(tmpY);{Y軸的值}
label2.caption := Xlabel[round(Tx)];{X軸實際值}
>關于TeeChart坐標軸的基礎知識,可參考這篇文章《TeeChart經驗總結 5.Axis》
本站文章除注明轉載外,均為本站原創或翻譯。歡迎任何形式的轉載,但請務必注明出處、不得修改原文相關鏈接,如果存在內容上的異議請郵件反饋至chenjj@fc6vip.cn
文章轉載自:慧都控件