2016-03-24 4 views

答えて

1

DataPointLabelsはかなり自動的配置されていると、あなたはそれらの位置に影響を与えるだけの非常にいくつかのオプションがあります。

SmartLabelsがありますが、と重複しないようにする場合の動作の制御のみが可能です。

だから私はLabelsの代わりにAnnotationsに頼らなければならないと思います。あなたがそのDataPointに固定あなたがラベル付けたいDataPointにつき1 LineAnnotationと1 TextAnnotationを、必要とするあなたのイメージを複製する

Infactは..:

enter image description here

はあなたがすることによってあなたのSeries S1 1にDataPointsを追加していると仮定しましょう1つ:

int p = S1.Points.AddXY(yourXValue, yourYValue); 
string s = yourLabelText; 
DataPoint dp = S1.Points[p]; 

TextAnnotationを作成するか、またはpr私はここに位置を設定する方法

RectangleAnnotation ta = new RectangleAnnotation(); 
ta.AnchorDataPoint = dp; 
ta.AnchorOffsetX = 5;  // * 
ta.AnchorOffsetY = 3;  // * 
ta.AnchorAlignment = ContentAlignment.BottomLeft; 
ta.Text = s; 
chart1.Annotations.Add(ta); 

注(*)まで少し、右の注釈を移動するには:TextAnnotationのサブクラスは、バックグラウンドを可能にし、境界線を作成しているRectangleAnnotationを、ecise。数字はピクセルではありませんが、図のサイズの割合はです。あなたが好きな値を見つけるために少し実験する必要があります。アドバンテージは、グラフのサイズを変更したりズームしたりすると、距離が拡大されることです。

今、私たちは、矢印を追加します。

LineAnnotation la = new LineAnnotation(); 
la.SetAnchor(dp); 
la.AnchorOffsetX = 0.5; // (**) 
la.AnchorOffsetY = -0.5; // (**) 
la.StartCap = LineAnchorCapStyle.Arrow; 
la.Width = ta.AnchorOffsetX - la.AnchorOffsetX; 
la.Height = - ta.AnchorOffsetY + la.AnchorOffsetY; // (***)   
chart1.Annotations.Add(la); 

(**)私は矢印がポイントの円を重ならない少しDataPointオフの開始点を移動します。

(***)高さはポイントから上を向ける必要があることに注意してください。

+0

ラベルのある解決策を見つけるのに何時間もかかり、何も役に立たないことが分かりました。しかし注釈を付けると、それは魅力のように機能します。次回はもっと柔軟に考えるべきかもしれない。とにかくおかげさまで! – Dongyu

関連する問題