在DataVisualization中对齐标签。有效地进行调整

时间:2015-09-16 09:23:43

标签: c# .net asp.net-mvc-3 model-view-controller charts

我需要使用数据可视化开发图表。现在图表看起来像 以下

enter image description here

在上图中,我使用范围栏显示最小值和最大值,在范围栏中,标签(65 --- 210)现在位于中间部分。但我需要用红色显示最小值和最大值。即范围栏起始位置的最小值和范围栏终点位置的最大值。

如果有任何办法,请告诉我

1 个答案:

答案 0 :(得分:2)

这样做的方法是处理图表的Paint事件。 您需要使用Graphics对象进行更复杂的计算,以使其适用于通用案例。但它应该让你开始。

public partial class WebForm1 : System.Web.UI.Page
{
    float deltax, deltay, deltay2;
    Font font;
    Brush brush;
    Random r;

    protected void Page_Load(object sender, EventArgs e)
    {
        deltax = 7.5F;
        deltay = 60;
        deltay2 = 5;

        font = new Font("Courier", 14);
        brush = new SolidBrush(Color.Red);
        r = new Random();

        for (int i = 1; i <= 5; i++)
            Chart1.Series[0].Points.Add(new DataPoint(i, new double[2] { r.Next(10, 40), r.Next(60, 90) }));
    }
    protected void Chart1_PostPaint(object sender, ChartPaintEventArgs e)
    {
        if (e.ChartElement.ToString().Contains("Series"))
        {
            int count = Chart1.Series[0].Points.Count - 1;

            for (int i = count; i >= 0; i--)
            {
                DataPoint dp = Chart1.Series[0].Points[i];

                float size = (float)(deltax*(dp.YValues[1] - dp.YValues[0] + deltay2));
                float x = (float)(deltax * dp.YValues[0]);
                float y = (float)(deltay * (count - dp.XValue + 2));
                e.ChartGraphics.Graphics.DrawString(string.Format("{0}", dp.YValues[0]), font, brush, new PointF(x, y));
                e.ChartGraphics.Graphics.DrawString(string.Format("{0}", dp.YValues[1]), font, brush, new PointF(x + size, y));
            }
        }
    }
}

enter image description here