vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
Top-Preis! AP-Access-Tools-CD Volume 1  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2025
 
zurück

 Sie sind aktuell nicht angemeldet.Funktionen: Einloggen  |  Neu registrieren  |  Suchen

C# Ecke
Re: ok mehr dazu 
Autor: ModeratorDaveS (Moderator)
Datum: 28.01.09 09:37

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

alle Nachrichten anzeigenGesamtübersicht  |  Zum Thema  |  Suchen

 ThemaViews  AutorDatum
Kreis am Kreis ausrichten, Koordinatensystem-punkte zu ungen...3.3350Code27.01.09 08:55
Re: Kreis am Kreis ausrichten, Koordinatensystem-punkte zu u...1.823ModeratorDaveS27.01.09 14:30
Re: Kreis am Kreis ausrichten, Koordinatensystem-punkte zu u...1.811ModeratorDaveS27.01.09 14:37
ok mehr dazu1.7250Code27.01.09 16:26
Re: ok mehr dazu1.803ModeratorDaveS27.01.09 19:01
Re: ok mehr dazu1.7340Code27.01.09 22:07
Re: ok mehr dazu1.805ModeratorDaveS28.01.09 09:37
Re: ok mehr dazu1.7080Code29.01.09 07:43
Re: ok mehr dazu1.700ModeratorDaveS29.01.09 09:38
Re: ok mehr dazu1.747ModeratorDaveS30.01.09 10:37
Re: ok mehr dazu1.704ModeratorDaveS30.01.09 11:50
ohh ähmmm lange nicht geguckt1.6650Code08.02.09 15:41
Re: ohh ähmmm lange nicht geguckt1.628sollniss13.02.09 11:16

Sie sind nicht angemeldet!
Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.

Einloggen  |  Neu registrieren

Funktionen:  Zum Thema  |  GesamtübersichtSuchen 

nach obenzurück
 
   

Copyright ©2000-2025 vb@rchiv Dieter Otter
Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.

Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel