Winform Chart控件 - 为不同的数据保持显示相同的条宽

时间:2016-05-12 06:05:13

标签: c# winforms charts

我熟悉C#和Winform,但是对Chart控件不熟悉。我使用内置System.Windows.Forms.DataVisualization.Charting.Chart的VS2013来显示两点的条形图。这里只是代码:

    private void Form1_Load(object sender, EventArgs e)
    {
        Chart c = new Chart();
        c.Dock = DockStyle.Fill;

        ChartArea a = new ChartArea();
        a.AxisX.Minimum = 0;
        a.AxisX.Maximum = 4;
        a.AxisY.Minimum = 0;
        a.AxisY.Maximum = 2;

        c.ChartAreas.Add(a);

        Series s = new Series();
        //*******************
        s.Points.AddXY(1, 1);
        //s.Points.AddXY(2, 2);
        s.Points.AddXY(3, 2);
        //*******************
        c.Series.Add(s);

        this.Controls.Add(c);
    }

enter image description here 请注意评论部分,分数(2,2)和(3,2)只是不同的数据,与显示风格无关(我猜? )。所以这种行为看起来很奇怪,到目前为止我还没有找到解决方法继续显示(3,2)像(2,2)

1 个答案:

答案 0 :(得分:1)

您需要添加以下代码才能获得所需的输出:

1]修复轴的间隔,使轴标签和网格线不会改变。

a.AxisX.Interval = 1;

2]修复系列的条宽。您可以使用PixelPointWidth以像素为单位指定宽度,或在点数中指定PointWidth

使用PixelPointWidth的示例:

s["PixelPointWidth"] = "20";

此外,由于您使用c.Dock = DockStyle.Fill;将图表填充为整个表单,因此如果缩放表单,固定宽度将不会很好。 您可以使用MinPixelPointWidthMaxPixelPointWidth将范围指定为宽度。

s["MinPixelPointWidth"] = "20";
s["MaxPixelPointWidth"] = "80";

查看此链接以获取有关different chart elements的详细信息。 Technical Reference有关图表控件的详细文档。这对于理解细节可能很长但很重要。