2013-03-15 78 views
3

如果我有一個圖表控件,其中有2 chartAreas,圖表控件在默認情況下將chartAreas放在另一個的頂部,使每個區域佔用圖表控件的可用大小的50% 。如何修改C#圖表控件圖表區域百分比

有沒有辦法來改變chartAreas'%的,這樣我可以說,有頂級圖表拿75%的面積,底部圖表拿25%?

+1

代碼,請... – 2013-03-15 16:48:02

+0

@Peretz對於這部分我使用設計器來生成圖表。雖然我可以複製該代碼,但我不確定這會有所幫助。它只是一個標準圖表,其中有兩個chartAreas。沒有我自己的代碼影響到這一點,只是設計師。我想知道是否有人知道這個代碼。 – Xantham 2013-03-15 16:53:38

回答

8

所以,我終於找到了它,但我認爲它沒有很好的記錄。每個chartArea有財產ChartArea.Position。該屬性類型爲ElementPosition,幷包含與此問題相關的4個屬性。

高度:獲取或設置圖表元素的高度。
寬度:獲取或設置圖表元素的寬度。
X:獲取或設置適用圖表元素左上角的相對X座標。
Y:獲取或設置適用圖表元素左上角的相對Y座標。

當挖越深,HeightWidth性能也以相對座標表示,例如,你只能輸入0 - 100

基本上,你必須改變每個高度,和每個Y移動轉移他們。初始創建後,它不會自動調整其他數字。例如,如果我只是將chartArea [1]的Height更改爲更小的值,它仍然會錨定在之前的位置,因爲它會在其下方留下大量空白區域。

如果我再增加chartArea的Height [0],它可能籠絡chartArea [1],我們只是調整。因此,我必須設置chartArea [1]的Y將其向下移動,以便它不會被拖動,並且空白區域消失。

因此,要獲得類似的東西是什麼,我問的問題,我將其設置爲:

chart1.ChartAreas[0].Position.Y = 10; 
chart1.ChartAreas[0].Position.Height = 60; 
chart1.ChartAreas[1].Position.Y = 70; 
chart1.ChartAreas[1].Position.Height = 20; 

爲了使這個解釋有點更加清晰,我會參考圖表控件,這些chartAreas是作爲「父母」。

這些百分比,但在這個例子中,我們假定父母的大小爲100個像素。

這將第一chartArea開始以10像素顯示,並且使得約60像素高。然後它開始在70px顯示第二個chartArea,並使其大約20px高。

如果這個圖表是200像素高,那麼比例是相同的,但實際像素是雙(所以第一個圖表區設置爲60將使120像素高)。

我做了墊在我的真正的程序多做一些事情,因爲這有標題覆蓋軸標籤,但我覺得這些數字有助於更好地解釋它。

+0

如果對用戶不可見(如果在獨立的TabPage上有我的圖表,並且只有在將圖表呈現給用戶眼睛後調用*)纔會執行此操作。 – Ivan 2014-04-14 22:26:35

+0

只有足夠的地方(產生正確的結果)放到目前爲止我可以找到的是chart_Paint事件處理程序(但不是PrePaint/PostPaint或其他任何地方)。但是,當窗口最大化時,會產生一些可見的垃圾。 – Ivan 2014-04-14 22:37:15

+0

所以我其實很好奇如何解決這個問題... – Ivan 2014-04-14 22:44:55

2

您還可以將第二個圖表.Y位置設置爲第一個圖表的底部。這樣你只需要擔心第一張圖表的位置。該代碼看起來是這樣的:

chart1.ChartAreas[0].Position.Y = 10; 
chart1.ChartAreas[0].Position.Height = 60; 
chart1.ChartAreas[1].Position.Y = chart1.ChartAreas[0].Position.Bottom; 
chart1.ChartAreas[1].Position.Height = 20; 

您還可以墊.Y位置,當然,這取決於你如何多的空白,想圖表之間。對於我使用多個圖表構建的應用程序,我使用這種方法,並保證每個圖表都能正確定位,而不管個別圖表做了什麼。