www.mikrocontroller.net

Forum: PC-Programmierung C#: CAD-Programm mit UserControls?


Autor: Jürgen (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

ich erstelle gerade ein C#-Programm (mit WinForms; VS2008), das stark 
vergleichbar mit Visio ist (grafische Ausgabe von Kasten und Linien; 
Zeichnen von Blockdiagrammen; siehe Bildanhang).

Da meine Kasten etwas komplexer sein sollen, als nur ein gemaltes 
Rechteck mit 2 Wörtern Text drin, würde ich hierfür gerne ein 
Usercontrol zusammenbasteln.

Wie kann ich jetzt diese Usercontrol selektieren, zoomen, usw.?

Für selbstgezeichnete "Dinge" (Verbindungslinien usw.), die ich per 
DrawLine, DrawRect direkt auf die Zeichenfläche gemalt habe, sollte eine 
Selektion (bzw. die Erkennung, ob ich auf das Objekt geklickt habe) 
mittels "IsOutlineVisible/IsVisible" möglich sein. Soviel weiss ich aus 
der Theorie.
Mittels GraphicsPath und passenden Transformationen, kann ich meine 
Zeichnungen selbst skalieren, rotieren usw. Soweit theoretisch auch kein 
Problem.

Wie skaliere, selektiere, rotiere ich aber "fertige" bzw. selbst 
erstelle UserControls? Hier gibt es ja keine 
UserControl.IsVisible-Methode o.ä.?

Ist es üblich, dass man bei solchen Visio-like-Programmen zusätzlich zu 
den eigenen "Malereien" auch noch fertige UserControls einsetzt?

(Der Klassendesigner in VisualStudio ist eigentlich ähnlich und ich 
vermute, dass die Klassenkästchen auch ein UserControl sind, das sich 
aber zoomen läßt usw...).

Unter welchem Stichwort finde ich hier Beschreibungen zu dem Thema?
(Die Webcasts von Microsoft zum Thema GDI+ kenne ich schon - dort wird 
das nicht behandelt. :-( ).

Danke, Jürgen

Autor: Arc Net (arc)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Jürgen schrieb:
> Hallo,
>
> ich erstelle gerade ein C#-Programm (mit WinForms; VS2008), das stark
> vergleichbar mit Visio ist (grafische Ausgabe von Kasten und Linien;
> Zeichnen von Blockdiagrammen; siehe Bildanhang).
>
> Da meine Kasten etwas komplexer sein sollen, als nur ein gemaltes
> Rechteck mit 2 Wörtern Text drin, würde ich hierfür gerne ein
> Usercontrol zusammenbasteln.
>
> Wie kann ich jetzt diese Usercontrol selektieren, zoomen, usw.?
>
> Für selbstgezeichnete "Dinge" (Verbindungslinien usw.), die ich per
> DrawLine, DrawRect direkt auf die Zeichenfläche gemalt habe, sollte eine
> Selektion (bzw. die Erkennung, ob ich auf das Objekt geklickt habe)
> mittels "IsOutlineVisible/IsVisible" möglich sein. Soviel weiss ich aus
> der Theorie.
> Mittels GraphicsPath und passenden Transformationen, kann ich meine
> Zeichnungen selbst skalieren, rotieren usw. Soweit theoretisch auch kein
> Problem.
>
> Wie skaliere, selektiere, rotiere ich aber "fertige" bzw. selbst
> erstelle UserControls? Hier gibt es ja keine
> UserControl.IsVisible-Methode o.ä.?

Skalieren des gesamten Controls und aller Childs funktioniert über 
Control.Scale().
Für das Selektieren gibt's bei UserControls (und natürlich auch den 
Subcontrols) die ganz normalen MouseEvents und z.B. GetChildAtPoint
Bei den im UserControl selbstgezeichneten Dingen kann man wieder auf
IsVisible u.ä. zurückgreifen.
Rotieren funktioniert problemlos nur bei vollständig selbst gezeichneten 
Controls, bei den Standardcontrols dagegen nicht.

Mit WPF/Silverlight wäre das ganze problemlos machbar...

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.