在 C# 中的 windows 窗体上显示图表控件中的所有点
Display all points in chart control on a windows form in C#
我试图在 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;
}
}
}
当我 运行 然而,我得到这个情节:
无论我使用什么范围,我都会得到相似的结果。例如,以下输出是 x 和 y 在 0、30 范围内的输出:
然而,当我手动向列表中输入一些随机点时,图表会适当缩放,并且它们都显示得很好:
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)
};
这是为什么?以及如何让所有点在随机生成时正确显示。
我正在使用:
Microsoft Visual Studio Community 2017
Visual C# 2017 00369-60000-00001-AA613
Microsoft Visual C# 2017
在@HansPassant 的帮助下回答我自己的问题。显然,因为我每次都在创建一个新的随机对象,随机数生成器每次都会生成相同的数字,而且所有的点都在彼此之上。我通过在构造函数中声明一个 'random' 对象然后将其传递到我的 'GetRandomNumber' 函数来修复它。
我试图在 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;
}
}
}
当我 运行 然而,我得到这个情节:
无论我使用什么范围,我都会得到相似的结果。例如,以下输出是 x 和 y 在 0、30 范围内的输出:
然而,当我手动向列表中输入一些随机点时,图表会适当缩放,并且它们都显示得很好:
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)
};
这是为什么?以及如何让所有点在随机生成时正确显示。
我正在使用:
Microsoft Visual Studio Community 2017
Visual C# 2017 00369-60000-00001-AA613
Microsoft Visual C# 2017
在@HansPassant 的帮助下回答我自己的问题。显然,因为我每次都在创建一个新的随机对象,随机数生成器每次都会生成相同的数字,而且所有的点都在彼此之上。我通过在构造函数中声明一个 'random' 对象然后将其传递到我的 'GetRandomNumber' 函数来修复它。