2016-04-20 5 views
3

Ich bin daran interessiert, eine benutzerdefinierte GUI in C# zu machen, und ich hätte gerne einen Rat, wie man das am besten geht. Das angehängte Bild ist im Allgemeinen das, was ich erstellen möchte - nämlich Zeichentext, Boxen/Hintergründe, Bilder, Linien, Kreise und andere GUI-Elemente (wie Texteingabefelder und dergleichen).Wie würde man eine benutzerdefinierte GUI in C#

Ich weiß nicht wirklich, wo ich anfangen soll, was ich in der Lage war, von Google-Suchen zu glänzen, ist, dass GDI + und das Malen Ereignis in der Lage sein kann zu tun, was ich suche - aber ich weiß nicht ob Das ist der Weg, um so etwas zu machen, oder wenn es das falsche Werkzeug für den Job ist (aka ist es langsam/unwirksam im Vergleich zu etwas anderem).

//something along the lines of this: 
private void Form1_Paint(object sender, PaintEventArgs e) 
{ 
    System.Drawing.Graphics graphicsObj; 

    graphicsObj = this.CreateGraphics(); 

    Pen myPen = new Pen(System.Drawing.Color.Red, 5); 

    Rectangle myRectangle = new Rectangle(20, 20, 250, 200); 

    graphicsObj.DrawRectangle(myPen, myRectangle); 
} 

Vielen Dank für Ihre Zeit, und vergib mir, wenn ich etwas falsch sagte; Ich habe eine harte Zeit, die sogar beschreibt, um zu googlen, was ich suche zu tun --- so wird Ihre Hilfe wirklich geschätzt !!!!

A cool looking node based GUI thing from 3ds max

+2

Als jemand, der viel mit WPF gearbeitet hat, wäre dies möglich für mich mit WPF zu machen. Ich bezweifle jedoch, dass es die beste Lösung ist. Ich habe auch mit Game-Engines gearbeitet, aber sie benutzen hauptsächlich C++ und ihre eigenen GUI-Bibliotheken. Wirklich daran interessiert, einige andere Antworten zu hören. – Kolky

+0

Sie wollen auf keinen Fall das Paint-Ereignis für alles verwenden. Eine GUI besteht aus Steuerelementen, Steuerelementen und weiteren Steuerelementen. Suchen Sie nach einigen WinForms- oder WPF-Frameworks. –

+1

Es ist eine ziemlich breite Frage, da es vollständig von der Anwendung abhängt und wie GUI-Elemente mit der Programmlogik dahinter interagieren müssen. Die MVVM von WPF ist so konzipiert, dass GUI-Designer unabhängig von dem dahinter liegenden Business-Logik-Programmierer sein können. Dies erzeugt natürlich einige Overhead- und Latenzzeiten, ist jedoch ein ziemlich guter Ansatz für eine allgemeine GUI/Programm-Interaktion. – Adwaenyth

Antwort

2

Ist WPF eine Option für Sie? Ich würde es anhand des von Ihnen bereitgestellten Screenshots empfehlen. Diese Desktop-GUI-Technologie ist viel besser als WinForms geeignet, wie Ihr Code-Beispiel vermuten lässt.

  • Lernen Sie die Grundlagen von WPF und XAML über den von mir bereitgestellten Link.
  • Dann über die Canvas Tafel erfahren
  • Dann Templates Ich schlage vor, Sie lernen über

Nun, sollte dies erhalten Sie gehen. Wenn Sie spezielle Fragen haben, sind wir sicher, dass wir Ihnen hier in SO helfen werden.

aktualisieren Beispiel Canvas Platte in Artikel steuern: https://dannyvanderkraan.wordpress.com/2015/02/12/wpf-listbox-with-arbitrary-positioning-and-custom-shaped-items/

+0

Vielen Dank für Ihre Antwort. Um ehrlich zu sein, ich weiß nicht viel über WPF (abgesehen davon, dass es eine Menge HTML-Zeug in sich hat), und ich werde das untersuchen. Inwiefern ist WPF viel besser geeignet als WinForms? Vielen Dank noch einmal für Ihre Hilfe! –

+0

Abgesehen von den Leistungsgründen (es macht Grafiken anders als WinForms) ist es auch viel besser geeignet für die Entwicklung von reichen GUIs aufgrund des Kerns, auf den es sich stützt ... XAML. Mit WinForms müssen Sie häufig Ihre eigene WinControl zusammenhacken oder sehr teure kaufen, um zu bekommen, was Sie brauchen.Mit WPF können Sie in Ihrem Beispiel beispielsweise ein Canvas-Panel als ItemTemplate in ein ItemsControl einfügen und jedes Element gemäß einer ItemTemplate rendern lassen, die Sie aus verschiedenen Steuerelementen zusammensetzen, um so wie in Ihrem Screenshot zu aussehen. Alles nativ unterstützt. Schöne und reibungslose Entwicklererfahrung. –

+0

Kann nicht viel besser als das, vielen Dank noch einmal für Ihre Hilfe! –

0

Sie WPF verwenden oder können Sie die Suche nach Windows-Designs Forms. Sie können erstaunliche benutzerdefinierte gui tun, indem Sie Windows-Formulare anpassen. Wenn Sie ein neues Projekt erstellen möchten, würde ich Ihnen WPF vorschlagen, weil es einfacher ist, benutzerdefinierten Typ (vor allem Transparenz) zu implementieren

Verwandte Themen