2016-05-09 4 views
1

私はMS Chartsで作業していますが、何とかy軸の上にポイントを描画する方法を見つけることができません。 下の図に示すように、x = 0(ラベル1998)の点はY軸の下にあります。 誰もがこの問題を認識していますか?それはプリペイントとポストペイントのイベントの順序と関係がありますか?MS Chartの軸はトラフのデータポイントで描画されます

axis trough points

EDIT:だけy軸までのカスタム描かれたドットでテスト.. Chartenter image description here

+0

これは正常な動作です。実際にペイントイベントはありますか? – TaW

+0

ええ、OnPostPaintでは独自のベジェ曲線を描画します –

+0

さて、ポイントを描画することはそれほど難しくありません。同じAxisX.ValueToPixelPosition(dp.XValue)を使用できます。その他の機能.. – TaW

答えて

1

すべてDataPointsオーバーGridLinesを行くが、Axes下でTickMarks

Axesは同様にあなたがPaintイベントの一つでそれらを描く所有者に必要の上にそれらををペイントします。あなたのChartTypeはタイプPointsSplineまたはLineであり、CircleまたはRectangleのごMarkerType場合

これは簡単です。

ColumnBarなどの大部分の他のタイプの場合、これはかなり困難です。

ここにはPointsの簡単な例があります。あなたが好きなサイズを選んで..!

private void chart1_PostPaint(object sender, ChartPaintEventArgs e) 
{ 
    if (chart1.Series.Count == 0) return; 

    Axis AX = chart1.ChartAreas[0].AxisX; 
    Axis AY = chart1.ChartAreas[0].AxisY; 
    chart1.ApplyPaletteColors(); 
    foreach (Series s in chart1.Series) 
     foreach (DataPoint dp in s.Points) 
     { 
      float x = (float)AX.ValueToPixelPosition(dp.XValue); 
      float y = (float)AY.ValueToPixelPosition(dp.YValues[0]); 
      float w2 = 3.6f; 
      using (SolidBrush brush = new SolidBrush(Color.YellowGreen)) 
        e.ChartGraphics.Graphics.FillEllipse(brush, 
                 x - w2, y - w2, w2 * 2f, w2 * 2f); 
     } 
} 

enter image description hereenter image description here

私はいくつかのポイントのカスタム描画を抑制しています。

+0

私はこれをしましたが、y軸の左側の軸が自動的に描かれた点をy軸の右側に見るまで描画するという問題がありました私自身のカスタム描いた円.. –

+0

これはそうではありません。上記の追加された例とあなたのコードを比較してください! – TaW

+0

chartAreaRectが計算され、graphics.Clipがこれらの境界に設定されました。しかしあなたのイメージでは、軸上の点も下に引かれますか? –

関連する問題