1

PieItem の AddPieSlice メソッドを使用して円グラフを作成していますが、重複するラベルを処理する方法がわかりません。誰かが解決策や回避策を見つけましたか?

残念ながら、まだ画像を投稿することはできません...

4

1 に答える 1

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);
}

これにより、ラベルが作成され、どこに描画するかを選択できます。しかし、それは難しい部分です。基本的に、グラフが画面のどこにあり、ポイントがそのグラフのどこにあるかを確認する必要があります。非常に面倒ですが、静的グラフであれば問題にはなりません。それはハックです、私は知っています、しかしそれはうまくいきます、そしてそれは誰もが思いついたように思われたすべてです。

あなたが思いついたもの、またはこれを試してみたら教えてください!

于 2013-03-02T17:51:10.197 に答える