Ich verstehe nicht was das bringen soll, ausser alles kompliziert und sehr langsam zu machen. Es ist doch trivial Kreise zu zeichnen und die Berechnung, die ich erklärt habe ist auch nicht schwer zu verstehen. Hier ist Beispielcode. Es mag sein ich habe nicht ganz kapiert was du erreichen willst, zB wie groß soll der erste Kreis sein? Aber wie das ungefähr geht sollte dann hoffentlich klar werden.
Imports System.Math
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
namespace csDrawCircleAtMousePoint
{
public partial class Form1 : Form
{
public Form1()
{
this.InitializeComponent();
}
private class Circle
{
private PointF _center;
private float _radius;
public Circle(Point p, float r)
{
_center = p;
_radius = r;
}
public PointF Center
{
get { return _center; }
set { _center = value; }
}
public float Radius
{
get { return _radius; }
set { _radius = value; }
}
public RectangleF BoundingRectangle
{
get { return new RectangleF(_center.X - _radius, _center.Y - _
_radius, 2 * _radius, 2 * _radius); }
}
} // Class Circle
private List<Circle> circles = new List<Circle>();
private void Form1_MouseDown(object sender, MouseEventArgs e)
{
Point p = new Point(e.X, e.Y);
float r = 0;
if (circles.Count == 0)
{
r = 30; // Default size
}
else
{
// draw largest circle possible without overlap
r = float.MaxValue;
foreach (Circle c in circles)
{
float nr = (float)Math.Sqrt(Math.Pow(Math.Abs( _
p.X-c.Center.X), 2)+Math.Pow(Math.Abs(p.Y-c.Center.Y), _
2))-c.Radius-1;
if (nr < 0) return; // Exclude within another circle
if (nr < r) r = nr;
}
}
circles.Add(new Circle(p, r));
this.Refresh();
}
private void Form1_Paint(object sender, PaintEventArgs e)
{
foreach (Circle c in circles)
{
e.Graphics.DrawEllipse(Pens.Red, c.BoundingRectangle);
}
}
} // Class Form1
}________
Alle Angaben ohne Gewähr. Keine Haftung für Vorschläge, Tipps oder sonstige Hilfe, falls es schiefgeht, nur Zeit verschwendet oder man sonst nicht zufrieden ist |