私はMS Chartsで作業していますが、何とかy軸の上にポイントを描画する方法を見つけることができません。 下の図に示すように、x = 0(ラベル1998)の点はY軸の下にあります。 誰もがこの問題を認識していますか?それはプリペイントとポストペイントのイベントの順序と関係がありますか?MS Chartの軸はトラフのデータポイントで描画されます
EDIT:だけy軸までのカスタム描かれたドットでテスト.. Chart
で
私はMS Chartsで作業していますが、何とかy軸の上にポイントを描画する方法を見つけることができません。 下の図に示すように、x = 0(ラベル1998)の点はY軸の下にあります。 誰もがこの問題を認識していますか?それはプリペイントとポストペイントのイベントの順序と関係がありますか?MS Chartの軸はトラフのデータポイントで描画されます
EDIT:だけy軸までのカスタム描かれたドットでテスト.. Chart
で
すべてDataPoints
がオーバーGridLines
を行くが、Axes
下でTickMarks
。
はAxes
は同様にあなたがPaint
イベントの一つでそれらを描く所有者に必要の上にそれらををペイントします。あなたのChartType
はタイプPoints
、Spline
またはLine
であり、Circle
またはRectangle
のごMarkerType
場合
これは簡単です。
Column
やBar
などの大部分の他のタイプの場合、これはかなり困難です。
ここには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);
}
}
私はいくつかのポイントのカスタム描画を抑制しています。
私はこれをしましたが、y軸の左側の軸が自動的に描かれた点をy軸の右側に見るまで描画するという問題がありました私自身のカスタム描いた円.. –
これはそうではありません。上記の追加された例とあなたのコードを比較してください! – TaW
chartAreaRectが計算され、graphics.Clipがこれらの境界に設定されました。しかしあなたのイメージでは、軸上の点も下に引かれますか? –
これは正常な動作です。実際にペイントイベントはありますか? – TaW
ええ、OnPostPaintでは独自のベジェ曲線を描画します –
さて、ポイントを描画することはそれほど難しくありません。同じAxisX.ValueToPixelPosition(dp.XValue)を使用できます。その他の機能.. – TaW