Farbverlauf von Rechteck

  • VB.NET

Es gibt 11 Antworten in diesem Thema. Der letzte Beitrag () ist von ~blaze~.

    Farbverlauf von Rechteck

    Hi,

    habe mir das Powerpack für Visual Basic 2010 runtergeladen.

    Habe auch eine Rechteck gezeichnet und eine Füllverlauf eingestellt. Der Verläuft jetzt von Oben (rot) nach Unten (blau). jeweils zu 50%

    Wie kann ich ein Stellen dass es 70% rot und 30% blau sein soll?

    vbneuling88 schrieb:

    und eine Füllverlauf eingestellt.
    Mit welchem Code?
    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!
    Ich würde das über eine Bitmap lösen, in die per GDI+ horizontal / vertikal Linen in einer Farbe gezeichnet werden.
    Die jeweilige Farbe wird step by step in einer For-Schleife über die RGB-Werte ausgerechnet.
    Die Verteilung ist dann eine mathematische Leichtigkeit ;)


    EDIT: Es gibt LinearGradientBrushes, ups :D
    »There's no need to "teach" atheism. It's the natural result of education without indoctrination.« — Ricky Gervais

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „ThePlexian“ ()

    @vbneuling88:: Sieh Dir mal das an:

    VB.NET-Quellcode

    1. Imports System.Drawing.Drawing2D
    2. Public Class Form1
    3. Private Sub Form1_Paint(sender As System.Object, e As System.Windows.Forms.PaintEventArgs) Handles MyBase.Paint
    4. ' Formgröße
    5. Dim größe As New Rectangle(0, 0, Me.Width, Me.Height)
    6. Dim lgb As New LinearGradientBrush(größe, Color.Green, Color.Red, LinearGradientMode.BackwardDiagonal)
    7. ' anzeigen
    8. e.Graphics.FillRectangle(lgb, größe)
    9. End Sub
    10. End Class
    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!

    RodFromGermany schrieb:

    @vbneuling88:: Sieh Dir mal das an:

    VB.NET-Quellcode

    1. Imports System.Drawing.Drawing2D
    2. Public Class Form1
    3. Private Sub Form1_Paint(sender As System.Object, e As System.Windows.Forms.PaintEventArgs) Handles MyBase.Paint
    4. ' Formgröße
    5. Dim größe As New Rectangle(0, 0, Me.Width, Me.Height)
    6. Dim lgb As New LinearGradientBrush(größe, Color.Green, Color.Red, LinearGradientMode.BackwardDiagonal)
    7. ' anzeigen
    8. e.Graphics.FillRectangle(lgb, größe)
    9. End Sub
    10. End Class

    Hi, ja Klar, diese Lösung füllt das Rechteck auf mit den farben, aber eben nur 50% zu 50%. Z.B. wenn meine Obere Farbe (vertikale füllung ist eingestellt) Rot ist und die Untere Blau, dann ist ganz oben rot verläuft bis zur mitte hin mit blau und ganz unten auch blau. Ich möchte dieses Verhältnis aber selbst bestimmen!!!
    Definiere

    vbneuling88 schrieb:

    Ich möchte dieses Verhältnis aber selbst bestimmen
    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!
    die Angehängte datei zeigt eine füllung, welches von VB erzeugt wird, wenn ich einstelle

    LinearGradientBrush(größe, Color.Red, Color.Blue, LinearGradientMode.Vertical)

    Wie kann ich es realisierne, die Rote farbe weiter nach unten füllen zu lassen und ein anderes mal die Blaue weiter nach oben zu füllen lassen

    Das ist gemeint mit dem Verhältnis...
    Bilder
    • Unbenannt.PNG

      3,6 kB, 206×316, 117 mal angesehen
    Setze es selbst zusammen.

    VB.NET-Quellcode

    1. Private Sub Form1_Paint(sender As System.Object, e As System.Windows.Forms.PaintEventArgs) Handles MyBase.Paint
    2. ' Formgröße
    3. Dim größe As New Rectangle(0, 0, Me.Width, Me.Height \ 2)
    4. Dim lgb As New LinearGradientBrush(größe, Color.Green, Color.Red, LinearGradientMode.Vertical)
    5. ' anzeigen
    6. e.Graphics.FillRectangle(lgb, größe)
    7. größe = New Rectangle(0, Me.Height \ 2, Me.Width, Me.Height \ 2)
    8. e.Graphics.FillRectangle(Brushes.Red, größe)
    9. 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!

    RodFromGermany schrieb:

    Setze es selbst zusammen.

    VB.NET-Quellcode

    1. Private Sub Form1_Paint(sender As System.Object, e As System.Windows.Forms.PaintEventArgs) Handles MyBase.Paint
    2. ' Formgröße
    3. Dim größe As New Rectangle(0, 0, Me.Width, Me.Height \ 2)
    4. Dim lgb As New LinearGradientBrush(größe, Color.Green, Color.Red, LinearGradientMode.Vertical)
    5. ' anzeigen
    6. e.Graphics.FillRectangle(lgb, größe)
    7. größe = New Rectangle(0, Me.Height \ 2, Me.Width, Me.Height \ 2)
    8. e.Graphics.FillRectangle(Brushes.Red, größe)
    9. End Sub

    Dann hab ich ja keinen Farbverlauf mehr. Danke für euer Bemühen...

    vbneuling88 schrieb:

    Dann hab ich ja keinen Farbverlauf mehr.

    RodFromGermany schrieb:

    Setze es selbst zusammen.
    Entschuldige bitte, dass ich Dir einen völlig unsachlichen Hinweis und ein absolut nicht in Dein Konzept passenden Snippet gepostet habe.
    Leider habe ich damals, als der LinearGradientBrush konzipiert wurde, vergessen, Deine heutigen Anforderungen in einen NonLinearGradientBrush einfließen zu lassen.
    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!