Hocam çok teşekkür ederim.. Bu fonksiyon sorunumu çözecektir.. Fakat bir hata aldım bu haliyle.
center = new Point(cx, cy); satırında cx ve cy değişkenlerini float oldukları için hata verdi. İnt32ye çevirdim fakat o zamanda değer çok büyük diye yine derlemedi.
Aynı hata
return new Rectangle(new Point(center.X - radius, center.Y - radius), new Size(radius * 2, radius * 2));
bu kısımdada mevcut.. Pointleri PointF yaptığımdada hata aldım.. Çözümü nedir, nasıl yapabilirim ?
kodları bununla değiştirin
Rectangle FindCircle(PointF a, PointF b, PointF c)
{
PointF center;
float radius;
float x1 = (b.X + a.X) / 2;
float y1 = (b.Y + a.Y) / 2;
float dy1 = b.X - a.X;
float dx1 = -(b.Y - a.Y);
float x2 = (c.X + b.X) / 2;
float y2 = (c.Y + b.Y) / 2;
float dy2 = c.X - b.X;
float dx2 = -(c.Y - b.Y);
float cx = (y1 * dx1 * dx2 + x2 * dx1 * dy2 - x1 * dy1 * dx2 - y2 * dx1 * dx2) / (dx1 * dy2 - dy1 * dx2);
float cy = (cx - x1) * dy1 / dx1 + y1;
center = new PointF(cx, cy);
float dx = cx - a.X;
float dy = cy - a.Y;
radius = (float)Math.Sqrt(dx * dx + dy * dy);
return new Rectangle(new Point((int)(center.X - radius), (int)(center.Y - radius)), new Size((int)radius * 2, (int)radius * 2));
}