2017-12-17 2 views
0

C 및 Windows 폼 응용 프로그램의 차트 컨트롤에서 x와 y 좌표가 0에서 200 사이의 여러 포인트를 표시하려고합니다. 내 코드는 다음과 같습니다 C#에서 Windows 폼의 차트 컨트롤에 모든 포인트를 표시합니다.

enter image description here

내가 상관없이 내가 무엇을 사용 범위 비슷한 결과를 얻을 :

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; 
     } 
    } 
} 

나는이 프로그램을 실행할 때, 그러나, 나는이 음모를 얻을. 예를 들어, 다음 출력은 0의 범위에서 x와 y를 위해 30 :

enter image description here

내가 수동으로 목록에 어떤 임의의 포인트를 입력 그러나

, 차트가 적절하게 확장, 그들은 모두 쇼 잘 그것은 O를 최대 :

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 
+0

왜 System.Drawing.Point를 사용할 수 없습니까? 생성 된 포인트 수를 볼 수 있습니까? Entert Console.WriteLine (points.Count); 포인트를 추가 한 후. 그리고 생성 된 포인트의 값을 확인하십시오. – Polly

+0

@Pollyflow, 정수 값만 허용하기 때문에 system.Drawing.Point를 사용할 수 없습니다. 양식의 레이블을 사용하여 목록에 포인트 수를 표시하고 정확한 포인트 수를 표시합니다. – Adi

+0

System.Drawing.PointF는 float 값입니다. 포인트 값은? – Polly

답변

1

@HansPassant의 도움으로 내 자신의 질문에 대답. 분명히, 매번 새로운 무작위 객체를 생성했기 때문에 난수 생성기가 매번 같은 수를 생성하고 있으며 모든 점들이 서로 위에 놓여있었습니다. 나는 생성자에서 '임의의'객체를 선언하고이를 내 'GetRandomNumber'함수에 전달하여 문제를 해결했습니다.

관련 문제