GUI Konzept
Verfasst: 05.01.2014, 17:53
Hallo Menschen,
ich stehe grade vor der Aufgabe, eine GUI für mein aktuelles Projekt / dessen Engine zu programmieren. Da ich mir den Aufwand nur einmal machen möchte, dachte ich, ich frag mal in die Runde, was ihr so von meinen aktuellen Ideen haltet.
Der Code oben ist nicht implementiert, nur aus dem Kopf so meine Wunschvorstellung.
Würdet ihr mit so etwas arbeiten können oder gäbe es irgendwelche absoluten No-Gos?
Grüße
Felix
PS.:
Die Engine ist in C# mit OpenTK und OpenGL 3.3 geschrieben.
ich stehe grade vor der Aufgabe, eine GUI für mein aktuelles Projekt / dessen Engine zu programmieren. Da ich mir den Aufwand nur einmal machen möchte, dachte ich, ich frag mal in die Runde, was ihr so von meinen aktuellen Ideen haltet.
- Positionierung durch einen speziellen Skalarwert (Relative Größe zum Bildschirm + Pixel-Offset)
- Erstellen der Oberfläche via Code oder durch Definition in einer XML-Datei
- Zugriff auf Elemente durch Pfade ( gui.Get<Button>("window/buttonContainer/createButton") )
- Grundlegende API orientiert sich an Windows.Forms (Parenting, Controls, ...)
- Eventbasiertes UI-Feedback
Code: Alles auswählen
private void InitializeComponents()
{
// Load a layout from the asset folder
GUILayout layout = this.assets.Load<GUILayout>("gui/mainMenu");
// Create the GUI
this.gui = new GUI();
this.gui.Load(layout);
// Assign some events
Button startButton = this.gui.Get<Button>("buttonContainer/startButton");
startButton.Click += this.startButton_Click;
Button exitButton = this.gui.Get<Button>("buttonContainer/startButton");
exitButton.Click += this.exitButton_Click;
Button newButton = new Button("Click me!");
newButton.X = new Scalar(0.2f, -40); // 20% * parentWidth - 40 pixel
newButton.Y = new Scalar(0.2f, -15); // 20% * parentHeight - 15 pixel
newButton.Size = new ScalarSize(new Scalar(0.0f, 80), new Scalar(0.0f, 30)); // 80x30 pixel size
// Use ui base class here
Control container = this.gui.Get<Control>("buttonContainer");
container.Controls.Add(newButton); // Add the button
}
Würdet ihr mit so etwas arbeiten können oder gäbe es irgendwelche absoluten No-Gos?
Grüße
Felix
PS.:
Die Engine ist in C# mit OpenTK und OpenGL 3.3 geschrieben.