Bei Spielen oder aufwändig designen Anwendungen gibt es immer wieder mal Buttons oder Felder, die eine Textur enthalten. Diese Fläche "reagiert" dann auch auf z.B. "Rollover", und ändert die Textur. Dabei sind beide "Bilder" (Normal u. Rollover) in einer einzigen Datei gespeichert. (Beispiel Anhang "BTN_Copy.tga").` Das selbe Prinzip gibt es auch mit Animationen, oder kompletten "Custom Controls", die dann eine passende Textur zum jeweiligen "state" haben - Oder so ähnlich... Beispielsweise beinhaltet die Textur eines Sliders jeden Wert als "fertiges Bild" - also jede Stellung (z.B. höhe des Sliders) ist bereits "vorgerendert". (Beispiel Anhang "knob_unison_stereo.tga") Die "Texturen" stammen vom Musik-Programm "Fruity-Loops", welches komplett auf diese Weise "geskinnt" wurde. http://cdn2.bigcommerce.com/server700/1bb04/products/2431/images/6988/FL_Studio_Fruity_Loops_Edition__62213.1395426068.1280.1280.png?c=2 Da ich mich allmählich um mein GUI kümmern muss, frage ich: Wie erstellt man solche Texturen, und vorallem: wie kann man diese benutzen? Gibt es da etwas fertiges? Und eine Bib für C#? --> Man müsste im Endeffekt viel weniger (einzelne) Ressourcen laden, und der "Verwaltungs-Overhead" ist bestimmt auch geringer, als mit Einzelbildern zu hantieren - vorausgesetzt es gibt bereits eine gute Klasse dafür. Wie heißt diese Art und Weise des Skinnen´s? Das interessiert mich ehrlich gesagt schon sehr lange, da mir diese "Art" schon sehr früh - schon zu DOS Zeiten - begegnet ist, und anscheinend auch noch heute verwendet wird. Danke schon mal... /Edit: Sorry der Browser kann ja (meist) kein TGA. Hab ich ganz vergessen. Und ich finde auf die schnelle grad keine Möglichkeit, das als jpg zu Posten....
:
Bearbeitet durch User
Anscheinend werden diese Texturen direkt von z.B. DirectDraw "unterstützt". Jedoch will ich mich nicht an eine Schnittstelle binden. Daher bastel ich grad ne parametrierbare Usercontrol. Bis jetzt kann sie grob erkennen, wie die Textur in seine Einzelbilder zu teilen ist [Tiles] und dann ein Einzelbild[Index] anzeigen oder ausgeben. Es sollen "Verhalten" eingestellt werden können, so dass man Scrollen oder Sliden kann, und die Control demnach die Texturen und Values selber anpasst. Ist gar nicht so einfach, jeden State festzuhalten. Zum verdeutlichen ein Bild im Anhang: Aus der großen Textur können viele kleine gemacht werden. Es wird immer nur ein Teilstück ausgegeben. Derzeit der "Wert 85 von 128". Ich denke immer noch, dass es da bereits was fertiges gibt. Aber wonach kann ich denn suchen? Weiß denn wirklich niemand wie man diese Art von Texturen, oder die Anwendung davon nennt? Schlagworte nach denen ich Googlen kann? Oder habe ich so schlecht und unverständlich gefragt? ;-) Gruß, tsx
:
Bearbeitet durch User
Hallo Tim, das Stichwort, welches du vermutlich suchst, heißt "Texture Atlas". Erstellt werden diese Texturen bei uns meist mit Photoshop (je nach Anwendung teils manuell, teils per Skript). Viele Game-Engines und ein paar wenige GUI-Librarys bieten hier gleich von Haus aus entsprechende Funktionalitäten (z.B. http://doc.qt.io/qt-5/qsgtexture.html#texture-atlasses). Viele Grüße, Marcel
Die "Form" Klasse kann sowas von Haus aus. Sogar Kacheln, Strecken und was auch immer. Edit: Und fast jedes andere grafische Objekt natürlich auch. Edit2: Für viele Bilder gibt es sogar ein diese verwaltendes "Objekt" zum (unsichtbar) auf der Form platzieren. c# ist für ... alle ... gemacht. https://msdn.microsoft.com/de-de/library/system.windows.forms.imagelist(v=vs.110).aspx Nocheinedit: Das mit dem Scrollen geht so auch automatisch bei Hintergrundbildern scrollbarer Objekte.
:
Bearbeitet durch User
Hallo Tim, das Stichwort, du hast es selber schon benutzt, um eigene Windows Forms Bedienelemente zu erstellen heißt "Custom Controls". Das Prinzip um Custom Controls zu erstellen ist Vererbung: 1. Du suchst dir ein existierendes Bedienelement, was deinen Vorstellungen am nächsten kommt. Zum Beispiel möchtest Du eine Schaltfläche erstellen ähnlich System.Windows.Forms.Button 2. Dein Element erbt von dem Standard Element. Du erstellst also eine Klasse, welche von System.Windows.Forms.Button erbt. 3. Du überschreibst Die OnPaint() Methode, um deine Textur anstelle eines grauen Kästchens anzuzeigen. Die ersten beiden Treffer der Suche nach „windows forms custom control” ergaben: http://www.codeproject.com/Articles/2016/Writing-your-Custom-Control-step-by-step https://msdn.microsoft.com/en-us/library/ms996423.aspx Das Beispiel aus dem ersten Link kann man ganz gut ausprobieren. Kleiner Fallstrick in Punkt 1: Mittlerweile heisst das Visual Studio Project „Windows Forms Control Library“ und nicht Windows Control Library“ Viele Grüße Christian
Lukas T. schrieb: > Die "Form" Klasse kann sowas von Haus aus. ... > Das mit dem Scrollen geht so auch automatisch bei Hintergrundbildern > scrollbarer Objekte. @ Lukas T.: Ich weiß, das eine Form oder Control ein Hintergrund-Bild annehmen kann. Zeig mir doch mal, wie ich diesen "Texture Atlas" von Haus aus einstellen kann? Das würde mir grad 100% die Arbeit abnehmen. // Oder du weißt wahrscheinlich nicht genau was ich meine... !!?? ;-) @ Christian: Ich nutze einfach die Event´s vom "UserControl", und brauche mich nicht auf einen "Button" (o.ä.) festlegen. Ich werde die verschiedenen "Verhalten" zusammen in die neue Control packen, sodass sie "universell" wird, und brauche dazu nicht erben oder Overriden. Das ist i.d.R. immer mehr als nur ein Button - und selbst wenn ich davon Erbe, bringt das mir gar nichts zum besagten Thema. Es würde mich in dem Fall wahrscheinlich nur einschränken. UserControl selbst hat doch alle nötigen Teile. Trotzdem Danke für die Erläuterung, wie man eine Usercontrol baut ;-) Ich möchte mich wenn möglich an "Standard´s" halten, falls vorhanden - dass ich dann möglichst alle Texturen benutzen kann, und die Lib dann auch noch weiter verwendbar ist (Läuft bisher ganz gut) - und mit dem Schlagwort "Texture Atlas" komm ich erstmal weiter, Danke. Marcel schrieb: > Anwendung teils manuell, teils per Skript Kennst / Hast du ein gutes Script, das Einzelbilder (Horizontal oder Vertikal) zusammenbauen kann?
Tim S. schrieb: > Kennst / Hast du ein gutes Script, das Einzelbilder (Horizontal oder > Vertikal) zusammenbauen kann? Für Photoshop fällt mir hier das AtlasMaker-Script ein (http://richardjdare.com/blog/2012/11/atlasmaker-0-7-make-texture-atlases-in-photoshop/). Alternativ sollten sich mit den Suchbegriffen "texture atlas maker", "texture atlas generator" oder "texture atlas packer" auch zahlreiche eigenständige Tools finden lassen. Viele Grüße, Marcel
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.