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


von Jürgen (Gast)


Angehängte Dateien:

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

von Arc N. (arc)


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...

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.