2013-02-28 96 views
1

我使用PieItem AddPieSlice方法來構建我的餅圖,但無法弄清楚如何處理有時重疊的標籤。有沒有人找到解決方案或任何形式的解決方法?ZedGraph - 如何修復餅圖中的重疊標籤?

不幸的是,事實證明,我不能發表圖片尚未...

+0

<---這裏是圖像,如果有人想明白我想弄清楚什麼 – 2013-02-28 16:00:37

回答

0

IsPreventLabelOverlap財產也許嘗試爲true。不幸的是,這通常會擦除重疊的標籤,而不會將其展開。所以考慮到這一點,請參閱下文。

沒有一個圖書館可以按照您的要求提供,但有postpaint選項。不幸的是Zedgraph不能修復重疊的標籤(我試了很長時間,沒有運氣)。然而,有一個解決方法,但它是乏味的,你必須真正考慮放置你的圖形標籤的位置。請參見下面的代碼一個簡單的方法來添加一個標籤:

protected void Chart1_PostPaint(object sender, ChartPaintEventArgs e) 
{ 
    if (e.ChartElement is Chart) 
{ 
// create text to draw 
String TextToDraw; 
TextToDraw = "Chart Label" 

// get graphics tools 
Graphics g = e.ChartGraphics.Graphics; 
Font DrawFont = System.Drawing.SystemFonts.CaptionFont; 
Brush DrawBrush = Brushes.Black; 

// see how big the text will be 
int TxtWidth = (int)g.MeasureString(TextToDraw, DrawFont).Width; 
int TxtHeight = (int)g.MeasureString(TextToDraw, DrawFont).Height; 

// where to draw 
int x = 5; // a few pixels from the left border 

int y = (int)e.Chart.Height.Value; 
y = y - TxtHeight - 5; // a few pixels off the bottom 

// draw the string   
g.DrawString(TextToDraw, DrawFont, DrawBrush, x, y); 
} 

這將創建一個標籤爲您和您可以選擇在哪裏畫它。然而這是棘手的部分。您需要基本查明您的屏幕上的圖形以及該圖上的點。非常麻煩,但如果它是一個靜態圖,那麼它不應該成爲一個問題。我知道這是一種黑客行爲,但它起作用,並且這似乎是所有人都想出來的。

讓我們知道你想出什麼,或者如果你嘗試這個!

+0

謝謝你的回覆。不幸的是,圖表並不是靜態的,但我一定會考慮它,如果我想出了一個合理的解決方案,我會回來。 – 2013-03-22 16:45:49