フォームの中心にある円の周りに画像ボックスを移動しようとしています。丸めの問題により、画像ボックスが表示される場所を正確に表す問題が発生しています。私のデータのサブセットは、次のことを反映している可能性があります。
109.023696905025,151.715396359085
109.041149311463,152.715244054241
109.0586017179,153.715091749398
109.076054124337,154.714939444554
109.093506530774,155.714787139711
109.110958937212,156.714634834867
109.128411343649,157.714482530023
109.145863750086,158.71433022518
コントロールのLocation
フィールドは のみを受け入れますPoint
。これにより、ポイントの小数点以下が切り捨てられ、描画時に六角形のような形状になります。次のコード ブロックを使用して座標を作成しています。
double x1 = pictureBox1.Location.X;
double y1 = pictureBox1.Location.Y;
double cx = (double)this.Width / 2;
double cy = (double)this.Height / 2;
double radius = Math.Sqrt(Math.Pow(cx - x1, 2) + Math.Pow(cy - y1, 2));
double arc = Math.Atan((y1 - cy) / (x1 - cx));
double x = cx + radius * Math.Cos(arc + Math.PI - (Math.PI / 180.0));
double y = cy + radius * Math.Sin(arc + Math.PI - (Math.PI / 180.0));
オブジェクトを作成するときの不正確さPoint
と、ポイントを表す x と y を考えると、コードによって生成されたポイントをより正確に描画するにはどうすればよいでしょうか?
Console.WriteLine("{0},{1}",x, y);
pictureBox1.Location = new Point((int)x, (int)y); // Only takes integers, which results in the irregular path.