Möglichkeiten Oberflächen zu gestalten?
-
Hallo,
mir schwirrt seit einer Weile durch den Kopf ob es möglich ist, die Oberfläche so aufzubauen, dass der Benutzer sie frei gestalten kann.Sei es in Hintergrundfarbe, Farbe der Buttons, Farbe des Menüs, Schritfarbe oder sonstiges. - Mir stieß dabei sehr schnell der Gedanke einer CSS Datei in den Kopf. - Nach dem Prinzip arbeitet ja meines Wissens nach QT, dass das Design per CSS festgelegt wird.
Nun aber zu meiner Frage, gibt es eine Möglichkeit die Windows Forms Oberfläche nach dem Prinzip zu gestalten? Gibt es eventuell sogar frei verfügbare Klassen dazu?
Gruß, Patrick.
-
Im Windows Forms Nachfolger WPF geht das ja auch so ähnlich.
http://de.wikipedia.org/wiki/Windows_Presentation_Foundation
-
Mit .Net Winforms ist das möglich aber sehr kompliziert.
Die Klassen sind in System.Design.dll irgendwo verstreut.
Es wird in etwa auf das herauslaufen, was du auch im Designer siehst (IDE mit PopertyGrid etc.) nur mit Vorschaufunktion.Unter der Annahme, dass es eine benutzbare Ansicht (normalzustand) und einen Designer (DesginerSurface etc) geben soll müsste man folgendes machen:
Angenommen du hast schon eine Oberfläche mit dem Designer (fertig!) erstellt und Localisable auf true gestellt.
Als nächstes programmierst du einen Designer also mit dem DesginerSurface und PopertyGrid.Als erstes brauchst ein Format, welches die Darstellungsinformationen beinhaltet, z.B. eine Resourcen-Bibliothek. Dann erstellst du eine Klasse die von ComponentResourceManager ableitet und InternalGetResourceSet überschreibt und einen (eigenen?) ResourceSet zurückgibt, die die benutzerdefinierten Einstellungen enthält (wenn du nicht die Resourcenbibliothek nimmst). Dann änderst du in deiner Fensterklasse in
initializeComponent
die Zeile/*...*/ComponentResourceManager manager = new /*...*/ComponentResourceManager();
in
/*...*/ComponentResourceManager manager = new /*<Der Name deiner ComponentResourceManager Klasse>*/();
.
Außerdem musst du (irgendwie - d.h. kommt noch werde diesen Beitrag dementsprechend verändern) noch in dem Designer eine entsprechende Serilizer-Klasse
zuweisen, die die Rohdaten von Designer in deinem Format konvertieren.
nn schrieb:
Im Windows Forms Nachfolger WPF geht das ja auch so ähnlich.
http://de.wikipedia.org/wiki/Windows_Presentation_Foundation
Und wie ist das mit der individuellen benutzereigenen Oberfläche? Das WPF das Designen von Anwendungen erlichtert will ich nicht bestreiten, jedoch musst du dann eben wahrschlich über Themes gehen und diese müssen auch irgendwie angepasst werden.
Hoffendlich einigermaßen verständlich.
-
Rhombicosidodecahedron schrieb:
Und wie ist das mit der individuellen benutzereigenen Oberfläche? Das WPF das Designen von Anwendungen erlichtert will ich nicht bestreiten, jedoch musst du dann eben wahrschlich über Themes gehen und diese müssen auch irgendwie angepasst werden.
In der Praxis habe ich mich auch noch nicht damit beschäftigt. Aber die verschiedenen Möglichkeiten werden z.B. hier aufgezeigt:
-
nn schrieb:
Rhombicosidodecahedron schrieb:
Und wie ist das mit der individuellen benutzereigenen Oberfläche? Das WPF das Designen von Anwendungen erlichtert will ich nicht bestreiten, jedoch musst du dann eben wahrschlich über Themes gehen und diese müssen auch irgendwie angepasst werden.
In der Praxis habe ich mich auch noch nicht damit beschäftigt. Aber die verschiedenen Möglichkeiten werden z.B. hier aufgezeigt:
Dort wird nur gezeigt, dass man vorgefertigte Styles auswählen kann.
inflames2k schrieb:
[ist] es möglich [...], die Oberfläche so aufzubauen, dass der Benutzer sie frei gestalten kann?
-
Rhombicosidodecahedron schrieb:
inflames2k schrieb:
[ist] es möglich [...], die Oberfläche so aufzubauen, dass der Benutzer sie frei gestalten kann?
Ja, ja, habs gelesen. Aber er schrieb auch
inflames2k schrieb:
Sei es in Hintergrundfarbe, Farbe der Buttons, Farbe des Menüs, Schritfarbe oder sonstiges.
Das geht mit den Themes auf jeden Fall, und loose coupled XAML könnte man ja zur Laufzeit erzeugen und nachladen.
-
ich würde dir ja grundsätzlich wxDevC++ empfehlen. Mit dem Programm hab ich echt schon gute Erfahrungen gemacht und da wird auch noch konstant dran gearbeitet. Bei dem Programm wird das aufbauen von grafischen Oberflächen insofern sehr einfach, weil du die per drag & drop erstellen kannst. Außerdem ist die komplette wxWidgest Bibliothek objenkorientiert und da sind auch noch Klassen für echt alles mögliche implementiert, die das Programmieren an vielen Stellen echt viel einfacher machen, selbst dann wenn das Programm keine GUI hat und mit Grafik gar nichts zu tun hat.
-
Ja wxDevC++ kenn ich auch und hab auch schon damit gearbeitet. - Allerdings ist es zb. in Softwareunternehmen so, dass dann eher die Software der Namenhaften Hersteller genutzt wird. Wie eben Visual Studio.
Die Projekte an denen ich privat gerade arbeite, sind für mich einfach um mich ins Visual Studio und all dem was es kann herein zu arbeiten. Da ich demnächst eine Stelle als Entwickler in einem Unternehmen erhalte, welches mit dem Visual Studio entwickelt.
Aber weil wir eben bei wxDevC++ waren, ist denn da DotNet-Entwicklung möglich?
-
Hallo
Aber weil wir eben bei wxDevC++ waren, ist denn da DotNet-Entwicklung möglich?
Nein.
MfG,
Probe-Nutzer
-
Und schon fällt es von vornherein raus. Werd mir mal WPF und den Weg über die Design.dll anschauen.
-
mach das...