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
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.