Benutzer mit den meisten Antworten
Zeichnungen in Zeichnungen finden

Frage
-
Hallo!
Ich habe eine Frage. Ich habe eine Windows Forms Anwendnug mit "Punkten" (in form von rechtecken realisiert) gezeichnet.
Nun soll der Benutzer selbstständig geometrische Figuren zeichnen mit einer simplen Eingabe. Wenn diese geometrische Figur dann gezeichnet wird, soll festgestellt werden ob nun einer der Punkte in der geometrischen Form liegt. (Ich hoffe man weiß was ich mein)Das heißt ich bräuchte so ein Art "Zeichnungen in Zeichnungen" finden. Gibt es da Methoden?
Ich hab zwar ein bisschen gegoogelt ehrlich gesagt weiß ich aber nicht nach was ich genau googeln soll, daher auch mein etwas komischer Titel.
Ich sag schonmal danke!
Antworten
-
servus,
das ist ganz einfach:
Region.IsVisible-Methode (Point, Graphics)
http://msdn.microsoft.com/de-de/library/ms142260%28v=VS.100%29.aspxDu musst allerdings deinen Ansatz mit den Rechtecken etwas überarbeiten.
Microsoft MVP Office Access
https://mvp.support.microsoft.com/profile/Stefan.Hoffmann- Als Antwort vorgeschlagen Marcel RomaModerator Dienstag, 22. Februar 2011 12:44
- Als Antwort markiert Robert BreitenhoferModerator Mittwoch, 2. März 2011 08:07
-
Hallo Joe,
ja Stefan hat schon die IsVisible-Methode für die Region angesprochen.
Der Vollständigkeit halber ... es geht auch je nach Objekt mit Contains-Methoden von Objekten.
Man braucht aber auch nicht über Region zu gehen, sondern kann ggf. auch über die GraphicsPath.IsVisible-Methode gehen.
Die Contains-Methoden sind (übrigens) intern zum Beispiel bei Rectangle folgendermaßen implementiert:/// Determines if the specfied point is contained within the /// rectangular region defined by this <see cref='System.Drawing.Rectangle'/> . public bool Contains(int x, int y) { return this.X <= x && x < this.X + this.Width && this.Y <= y && y < this.Y + this.Height; } /// Determines if the specfied point is contained within the /// rectangular region defined by this <see cref='System.Drawing.Rectangle'/> . public bool Contains(Point pt) { return Contains(pt.X, pt.Y); } /// Determines if the rectangular region represented by /// <paramref name="rect"/> is entirely contained within the rectangular region represented by /// this <see cref='System.Drawing.Rectangle'/> . public bool Contains(Rectangle rect) { return (this.X <= rect.X) && ((rect.X + rect.Width) <= (this.X + this.Width)) && (this.Y <= rect.Y) && ((rect.Y + rect.Height) <= (this.Y + this.Height)); }
somit wird Dir auch die Methodik klar, wie die Inhalts-Berechnungen implementiert werden.
In .NET sind diese Methoden aber alle gewrappt.Weitere Links: http://www.ms-news.net/f824/ueberdeckung-11888338.html
ciao Frank- Als Antwort vorgeschlagen Robert BreitenhoferModerator Freitag, 25. Februar 2011 10:43
- Als Antwort markiert Robert BreitenhoferModerator Mittwoch, 2. März 2011 08:07
Alle Antworten
-
servus,
das ist ganz einfach:
Region.IsVisible-Methode (Point, Graphics)
http://msdn.microsoft.com/de-de/library/ms142260%28v=VS.100%29.aspxDu musst allerdings deinen Ansatz mit den Rechtecken etwas überarbeiten.
Microsoft MVP Office Access
https://mvp.support.microsoft.com/profile/Stefan.Hoffmann- Als Antwort vorgeschlagen Marcel RomaModerator Dienstag, 22. Februar 2011 12:44
- Als Antwort markiert Robert BreitenhoferModerator Mittwoch, 2. März 2011 08:07
-
Hallo Joe,
ja Stefan hat schon die IsVisible-Methode für die Region angesprochen.
Der Vollständigkeit halber ... es geht auch je nach Objekt mit Contains-Methoden von Objekten.
Man braucht aber auch nicht über Region zu gehen, sondern kann ggf. auch über die GraphicsPath.IsVisible-Methode gehen.
Die Contains-Methoden sind (übrigens) intern zum Beispiel bei Rectangle folgendermaßen implementiert:/// Determines if the specfied point is contained within the /// rectangular region defined by this <see cref='System.Drawing.Rectangle'/> . public bool Contains(int x, int y) { return this.X <= x && x < this.X + this.Width && this.Y <= y && y < this.Y + this.Height; } /// Determines if the specfied point is contained within the /// rectangular region defined by this <see cref='System.Drawing.Rectangle'/> . public bool Contains(Point pt) { return Contains(pt.X, pt.Y); } /// Determines if the rectangular region represented by /// <paramref name="rect"/> is entirely contained within the rectangular region represented by /// this <see cref='System.Drawing.Rectangle'/> . public bool Contains(Rectangle rect) { return (this.X <= rect.X) && ((rect.X + rect.Width) <= (this.X + this.Width)) && (this.Y <= rect.Y) && ((rect.Y + rect.Height) <= (this.Y + this.Height)); }
somit wird Dir auch die Methodik klar, wie die Inhalts-Berechnungen implementiert werden.
In .NET sind diese Methoden aber alle gewrappt.Weitere Links: http://www.ms-news.net/f824/ueberdeckung-11888338.html
ciao Frank- Als Antwort vorgeschlagen Robert BreitenhoferModerator Freitag, 25. Februar 2011 10:43
- Als Antwort markiert Robert BreitenhoferModerator Mittwoch, 2. März 2011 08:07