在C#中的窗体上显示图表控件中的所有点

问题描述 投票:0回答:1

我试图在C#中的Windows窗体应用程序的图表控件中显示x和y坐标在0到200之间的几个点。我的代码如下所示:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace WindowsFormsApp3
{
    public partial class Form1 : Form
    {
        public class Point
        {
            public double X;
            public double Y;

            public Point(double x, double y)
            {
                X = x;
                Y = y;
            }
        }

        public Form1()
        {

            InitializeComponent();

            List<Point> points = new List<Point>();

            for (int i=0; i<5; i++)
            {
                points.Add(new Point(GetRandomNumber(0, 200), GetRandomNumber(0, 200)));
            }

            foreach(Point f in points)
            {
                chart1.Series["Series1"].Points.AddXY(f.X, f.Y);
            }

            Application.DoEvents();

        }

        double GetRandomNumber(double minimum, double maximum)
        {
            Random random = new Random();
            return random.NextDouble() * (maximum - minimum) + minimum;
        }
    }
}

然而,当我运行这个时,我得到了这个情节:

enter image description here

无论我使用什么范围,我都会得到类似的结果。例如,以下输出用于x和y,范围为0,30:

enter image description here

但是,当我手动将一些随机点输入到列表中时,图表会适当地缩放,并且它们都显示出来就好了:

List<Point> points = new List<Point>
            {
                new Point(10, 29),
                new Point(5, 16),
                new Point(27, 8),
                new Point(17, 23),
                new Point(22, 13)
            };

enter image description here

为什么是这样?以及如何在随机生成时正确显示所有点。

我在用:

Microsoft Visual Studio Community 2017 
Visual C# 2017   00369-60000-00001-AA613
Microsoft Visual C# 2017
c# winforms visual-studio microsoft-chart-controls
1个回答
1
投票

在@HansPassant的帮助下回答我自己的问题。显然,因为我每次都在创建一个新的随机对象,所以随机数生成器每次生成相同的数字,并且所有的点都在彼此之上。我通过在构造函数中声明一个'random'对象然后将它传递给我的'GetRandomNumber'函数来修复它。

© www.soinside.com 2019 - 2024. All rights reserved.