Farbverlauf als Hintergrund

    • VB.NET

    Es gibt 5 Antworten in diesem Thema. Der letzte Beitrag () ist von LaMiy.

      Farbverlauf als Hintergrund

      Guten Abend,
      sicherlich ist dies hier mit genug "googlen" auch in anderer, aber fast gleicher Form zu finden.
      Jeddoch wollte ich es hier nochmal zur Verfügung stellen:

      Zuerst muss

      VB.NET-Quellcode

      1. Imports System.Drawing.Drawing2D

      importiert werden.

      Dann:

      VB.NET-Quellcode

      1. Protected Overrides Sub onpaint(ByVal a As System.Windows.Forms.PaintEventArgs)
      2. ' Formgröße
      3. Dim größe As New Rectangle(0, 0, Me.Width, Me.Height)
      4. Using lgb As New LinearGradientBrush(größe, Color.White, Color.Black, LinearGradientMode.BackwardDiagonal)
      5. ' anzeigen
      6. a.Graphics.FillRectangle(lgb, größe)
      7. End Using
      8. End Sub


      Hierbei kann

      VB.NET-Quellcode

      1. Color.White, Color.Black
      durch eine beliebige Farbe ersetzt werden.

      Und auch bei:

      VB.NET-Quellcode

      1. LinearGradientMode.BackwardDiagonal
      kann die "Richtung" variiert werden.

      Erweiterte Anwendung
      Spoiler anzeigen
      Edit: Natürlich kann im

      VB.NET-Quellcode

      1. onpaint(ByVal a As System.Windows.Forms.PaintEventArgs)
      auch anderes mit "Graphics gemacht werden"
      Hier ein wirklich kleiner Vorgeschmack: openbook.galileocomputing.de/vb_net/msvb110000.htm


      Ein Beispiel vieler Möglichkeiten:
      Spoiler anzeigen

      VB.NET-Quellcode

      1. Dim größe As New Rectangle(0, 20, 50, 100)
      2. Dim lgb As New LinearGradientBrush(größe, Color.White, Color.Green, LinearGradientMode.BackwardDiagonal)
      3. a.Graphics.FillEllipse(lgb, 0, 50, 200, 100)


      Verschiebung:
      Spoiler anzeigen
      Der Bereich, indem der Farbverlauf ist kann auch verschoben werden.
      Dazu hier ein kleines Beispiel:

      VB.NET-Quellcode

      1. Dim größe As New Rectangle(20, 20, Me.Width / 2, Me.Height / 2)

      Hier wird zuerst die Entfernung zum Rand bestimmt. In diesem Fall ist es 20 und 20, dann wird die Größe bestimmt. Hier kann man z.B die Formhöhe und die Formlänge durch 2 teilen.


      LG :thumbsup:

      Dieser Beitrag wurde bereits 6 mal editiert, zuletzt von „LaMiy“ ()

      Infinity schrieb:

      freigeben.
      Das ist mit Using viel eleganter:

      VB.NET-Quellcode

      1. Protected Overrides Sub OnPaint(ByVal a As System.Windows.Forms.PaintEventArgs)
      2. ' Formgröße
      3. Dim größe As New Rectangle(0, 0, Me.Width, Me.Height)
      4. Using lgb As New LinearGradientBrush(größe, Color.White, Color.Black, LinearGradientMode.BackwardDiagonal)
      5. ' anzeigen
      6. a.Graphics.FillRectangle(lgb, größe)
      7. End Using
      8. End Sub
      Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
      Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
      Ein guter .NET-Snippetkonverter (der ist verfügbar).
      Programmierfragen über PN / Konversation werden ignoriert!
      Wobei es wahrscheinlich auch noch sinnvoll wäre, per SetStyle den ControlStyle noch anzupassen, sodass es (eigentlich) zu keinem Flackern kommen kann.