Benutzer mit den meisten Antworten
Abgerundete Windows Forms

Frage
-
Hey,
kann mir einer eine konkrete Methode sagen, wie man abgerundete Forms in Visual Studio 2013 hinbekommt?
- 99% aller Ergebnisse in Google sind zu VB, die irgendwie anders sind..
- Und habe etwas mit PowerPack usw gelesen, welches auf MSDN teilweise extrem schlecht erklärt wird (zumindest für einen Anfänger)
Muss ich diese PowerPack Methode verwenden?
PS: Ich will zB sowas hier machen:
http://imgur.com/XTWMfp5
Gruß
Antworten
-
Hallo,
viele Möglichkeiten hast du unter WinForms nicht. Zumindest wird eine Rundung immer leicht verpixelt aussehen. Grundsätzlich könntest du es beispielsweise so machen:private void Form1_Load(object sender, EventArgs e) { //Die Einstellungen für die Form lassen sich auch direkt im Eigenschaftenfenster treffen this.FormBorderStyle = FormBorderStyle.None; this.TransparencyKey = this.BackColor = Color.Fuchsia;//Den Formhintergrund voll transparent machen - alles was nun die Farbe Fuchsia hat, wird transparent } private void Form1_Paint(object sender, PaintEventArgs e) { //Selbst den Forumhintergrund zeichnen e.Graphics.FillEllipse(Brushes.LightBlue, 0, 0, 20, 20); e.Graphics.FillEllipse(Brushes.LightBlue, this.ClientSize.Width - 20, 0, 20, 20); e.Graphics.FillEllipse(Brushes.LightBlue, this.ClientSize.Width - 20, this.ClientSize.Height - 20, 20, 20); e.Graphics.FillEllipse(Brushes.LightBlue, 0, this.ClientSize.Height - 20, 20, 20); e.Graphics.FillRectangle(Brushes.LightBlue, 10, 0, this.ClientSize.Width - 20, this.ClientSize.Height); e.Graphics.FillRectangle(Brushes.LightBlue, 0, 10, this.ClientSize.Width, this.ClientSize.Height - 20); }
Die beiden Ereignisse kannst du im Designer abonnieren. markiere hierfür die Form, drücke F4 und wechsle in die Ereignis-Ansicht (Blitz-Button) und mache jeweils einen Doppelklick in die Leere Combobox um das jeweilige Event zu abonnieren.
Es gibt noch einige Andere Varianten, wo man Beispielsweise direkt die Form zuschneiden kann. Aber keine der Varianten wird wirklich besser.
Wenn du ein hochwertiges Design erzielen willst, empfehle ich dir auf WPF umzusteigen. Dort hast du deutlich mehr Möglichkeiten.
Tom Lambert - .NET (C#) MVP
Wozu Antworten markieren und für Beiträge abstimmen? Klicke hier.
Nützliche Links: .NET Quellcode | C# ↔ VB.NET Konverter | Account bestätigen (Verify Your Account)
Ich: Webseite | Code Beispiele | Facebook | Twitter | Snippets- Als Antwort vorgeschlagen Dimitar DenkovMicrosoft contingent staff, Administrator Freitag, 30. Januar 2015 09:57
- Als Antwort markiert Enes97 Sonntag, 1. Februar 2015 16:23
Alle Antworten
-
Hallo,
viele Möglichkeiten hast du unter WinForms nicht. Zumindest wird eine Rundung immer leicht verpixelt aussehen. Grundsätzlich könntest du es beispielsweise so machen:private void Form1_Load(object sender, EventArgs e) { //Die Einstellungen für die Form lassen sich auch direkt im Eigenschaftenfenster treffen this.FormBorderStyle = FormBorderStyle.None; this.TransparencyKey = this.BackColor = Color.Fuchsia;//Den Formhintergrund voll transparent machen - alles was nun die Farbe Fuchsia hat, wird transparent } private void Form1_Paint(object sender, PaintEventArgs e) { //Selbst den Forumhintergrund zeichnen e.Graphics.FillEllipse(Brushes.LightBlue, 0, 0, 20, 20); e.Graphics.FillEllipse(Brushes.LightBlue, this.ClientSize.Width - 20, 0, 20, 20); e.Graphics.FillEllipse(Brushes.LightBlue, this.ClientSize.Width - 20, this.ClientSize.Height - 20, 20, 20); e.Graphics.FillEllipse(Brushes.LightBlue, 0, this.ClientSize.Height - 20, 20, 20); e.Graphics.FillRectangle(Brushes.LightBlue, 10, 0, this.ClientSize.Width - 20, this.ClientSize.Height); e.Graphics.FillRectangle(Brushes.LightBlue, 0, 10, this.ClientSize.Width, this.ClientSize.Height - 20); }
Die beiden Ereignisse kannst du im Designer abonnieren. markiere hierfür die Form, drücke F4 und wechsle in die Ereignis-Ansicht (Blitz-Button) und mache jeweils einen Doppelklick in die Leere Combobox um das jeweilige Event zu abonnieren.
Es gibt noch einige Andere Varianten, wo man Beispielsweise direkt die Form zuschneiden kann. Aber keine der Varianten wird wirklich besser.
Wenn du ein hochwertiges Design erzielen willst, empfehle ich dir auf WPF umzusteigen. Dort hast du deutlich mehr Möglichkeiten.
Tom Lambert - .NET (C#) MVP
Wozu Antworten markieren und für Beiträge abstimmen? Klicke hier.
Nützliche Links: .NET Quellcode | C# ↔ VB.NET Konverter | Account bestätigen (Verify Your Account)
Ich: Webseite | Code Beispiele | Facebook | Twitter | Snippets- Als Antwort vorgeschlagen Dimitar DenkovMicrosoft contingent staff, Administrator Freitag, 30. Januar 2015 09:57
- Als Antwort markiert Enes97 Sonntag, 1. Februar 2015 16:23
-
Hallo,
das Fenster selbst kannst du nicht abrunden, da dies vom System abhängt. Du kannst aber das Fenster ohne Rahmen zeichnen (FormBorderStyle), um dann keine Hintergrundfarbe zu setzen und direkt in das Fenster ein Rechtekc mit abgerundeten Ecken zu zeichnen.
© 2015 Thomas Roskop
Germany // Deutschland
-
Schau dir dazu Koopakillers Antwort an,
du musst den normalen Fesnterhintergrund entfernen, denn sonst gäbe es immernoch einen rechteckigen Weißen "Fensterrahmen".
Wie meinst du das mit "auf Control"? Natürlich arbeitest du mit irgendwelchen Controls im Fenster, aber du kannst ja wohl auch das Fenster direkt bearbeiten?!
Und PS (wie Koopakiller auch bereits meinte) - für gutes Design und anpassbarkeit, verwende doch lieber WPF!
© 2015 Thomas Roskop
Germany // Deutschland
- Bearbeitet Thomas Roskop Dienstag, 27. Januar 2015 05:51
-
Hallo zusammen,
Thomas Roskop wrote in
news:efad7acc-ab87-4e01-8bee-0ad92eddbe40@communitybridge.codeplex.com:das Fenster selbst kannst du nicht abrunden, da dies vom System
abhängt.stimmt nicht ganz...
Man kann auch Alpha-Blend-Fenster 'bauen', die können (auch ohne verpixelte Kanten) beliebige Formen annehmen.Sehr gutes Beispiel:
http://www.codeproject.com/Articles/1822/Per-Pixel-Alpha-Blend-in-CAuf diesen Fenstern kann man aber keine Controls einfügen, die muss man schon selber 'drauf malen' und Positionen und Clicks selber auswerten.
Ciao,
Georg