ZedGraph - 如何修复饼图中的重叠标签?

时间:2013-02-28 15:54:04

标签: zedgraph

我正在使用PieItem AddPieSlice方法来构建我的饼图,但无法弄清楚如何处理有时重叠的标签。有没有人找到解决方案或任何一种解决方法?

不幸的是,事实证明我还不能发布图片......

1 个答案:

答案 0 :(得分: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);
}

这将为您创建一个标签,您可以选择绘制它的位置。然而,这是棘手的部分。您需要基本找出图表在屏幕上的位置以及该图表上的点。非常麻烦,但如果它是一个静态图形,那么它应该不是问题。这是一个黑客,我知道,但它的确有效,而且似乎所有人都想出来。

让我们知道您的想法或尝试过这个!