Skins für Programm

theindra

Mitglied
Ich schreibe ein Programm das mehrere Skins verwenden soll z.b.: WinAmp.
Wie implementiert man sowas Kann mir irgendjemand einen Ansatz posten.
MFG TheIndra
 
Hmmm...

Also ich würde das so anpacken:
Jedes Element in deinem Programm hat ja gewisse Darstellungseigenschaften, z.B. Die Farbe oder Schriftart bei Buttons, die Hintergrundfarbe von Panels usw..
Unter anderem in diesen Eigenschaften unterscheiden sich dann später deine Skins voneinander.
Um den jeweiligen Skin zu verwenden, verknüpfst du dein Auswahl-Menü in einem EventHandler mit einem Switch/Case-Konstrukt, wo in den einzelnen Fällen ebendiese Eigenschaften entsprechend abgeändert werden, d.h. wenn z.B. jemand "Klee" wählt, ändert sich die Schriftfarbe in einen dunklen Grünton, die Panelhintergrundfarbe in einen hellen, blassen Grünton, der Image-Button zeigt als Bild jetzt ein Kleeblatt anstatt dem Zahnrad, was er vorher anzeigte etc..

Das nur mal als Denkanstoß; die Implementierung solltest du selber versuchen. ;)

Gruß, Niko
 
@cosmochaosmaker:
Nun gut, das wäre wohl die Königslösung, gebe ich zu. Ich denke halt immer erst daran, wie man sowas prinzipiell selbst mit diversen Programmierkonstrukten hinbekommen könnte :D, aber das beim CodeProject ist eine viel elegantere Lösung, weil man mit Windows-eigenen Mitteln das Aussehen ändert.

Gruß, Niko
 
Ich hab zwar nicht die Zeit gefunden die Lösung von CodeProject genau anzusehen aber sieht nicht nach dem aus was ich suche.

Und das mit den Farben und Bildern ist zu wenig!
Der eine Skin soll den Button rund und er andere Rechteckig anzeigen...
Das auch die Formen der Controls veränderbar sind .....
Und das ganze möglichst OOP.

Ich weiß zwar wie ich Buttons rund mache und so aber nicht wie ich es zur Laufzeit mache und die Arten der Formen auch vorher noch nicht bekannt sind

MFG TheIndra
 
cosmochaosmaker,
das was du da verlinkt hast, ist nur eine Anleitung, wie man für sein Programm den WindowsXP Style aktiviert, aber nicht wie man seine eigene "Skin-Engine" erstellt.

theindra,
ein guter Anfang ist wahrscheinlich Creating Custom Shaped Windows Forms in .NET (codeproject) und auch noch Shaped Windows Forms and Controls in Visual Studio .NET (msdn)

Wenn du mal damit umgehen kannst, brauchst das ganze nur noch dynamisch anhand einer Config einstellen lassen können.

Ok, hab grad nochmal deinen letzten Beitrag gelesen. Da du das ja schon weisst wie es geht, ein Vorschlag zu deiner Skin-Definition-File:
Ein Skinpaket besteht aus einer Hintergrunddatei, verschiedene Dateien die du vielleicht für die Controls brauchst etc.
Die Config-Datei ist am Besten eine XML Datei in der du verschiedene Nodes hast. Ganz aussen vielleicht das Fenster, darunter als Child-Elemente die Controls.
Diese ganzen Knoten haben verschiedene Paramter, welche die Größe, Position, Grafikdateien etc. bestimmen.

Dein Programm muss dann nur noch, wenn es gestartet wird, eine der Dateien auslesen, und anhand derer die Controls erstellen.

Die Controls welche Skinfähig sein sollen (Button etc.), sollten eigens geschriebene sein, welche von der "originalen" Klasse ableiten, aber nur die Zeichenmethode überschreiben, und Eigenschaften zum Festlegen der Grafiken etc. haben.

MfG,
Alex
 
Zurück