Farbverlauf füllen VB.NET

Warum in der Welt würde der folgende einfache code nicht? Dieser code füllt immer den Weg mit dem Farbverlauf von Links nach rechts, egal, welchen Wert der LinearGradientMode ich verwenden. graphPath ist ein GraphicPath Objekt erstellt, an anderer Stelle (im wesentlichen ein Rechteck mit abgerundeten Ecken):

Dim gradBrush as New LinearGradientBrush(rect, color1, color2, LinearGradientMode.Vertical)
graphics.FillPath(gradBrush, graphPath) 

UPDATE

Allen Fragen, auch dies schlägt fehl (zieht horizontal). Erstellen Sie einfach eine neue VB.NET WinForms-Projekt und fügen Sie folgenden code in Form1 das Paint-Ereignis:

 Private Sub Form1_Paint(sender As System.Object, e As System.Windows.Forms.PaintEventArgs) Handles MyBase.Paint
    Dim gradBrush As New LinearGradientBrush(Me.ClientRectangle, Color.Red, Color.White, LinearGradientMode.BackwardDiagonal)
    e.Graphics.FillRectangle(gradBrush, Me.ClientRectangle)
  End Sub

Also ich glaube nicht, das hat nichts zu tun mit dem Weg-Konstruktion.

HINWEIS

Bin ich froh, wenn jemand nur bestätigen, dieses Problem tritt auf, Ihre Maschinen zu, so dass wir wissen, es ist etwas mit GDI+ und nicht mein code. Nur zur Information, ich habe versucht es auf einer WinXP-VM Win7-Maschine (32-bit, Aero-Modus) mit .NET Fx 4.0 Client Profile-und Full-version.

SCHLIEßLICH

Zuerst einmal herzlichen Dank an all die tollen Leute, die mir geholfen, zu entdecken. Das problem war, dass ich die Bearbeitung fremder code, die geschaffen hatte, ein enum namens genau LinearGradientMode (zur Unterstützung der None-option, die er brauchte für seine Zwecke). Nun wenn er an das Objekt dieses enum zu LinearGradientBrush Konstruktor, C# - compiler würde denken, dass die nächsten übereinstimmenden überlastung war das eine, das nehmen Sie "Winkel" - parameter (dies ist meine Theorie), und konvertieren Sie den Wert meiner gradient-Modus entspricht int (0, 1, 2, 3 und 4 sind die Werte) und rufen diesen Konstruktor, die eine (nahezu) horizontalen Verlauf in jedem Fall.

Nochmals vielen Dank an alle, die teilgenommen haben.

  • Was ist enthalten in rect? Der Win32-Dokumentation besagt, dass das Rechteck kann Einfluss auf die Richtung des Gradienten.
  • rect ist einfach die "container" - Bereich, der definiert, das abgerundetes-Rechteck-Form.
  • Wie erstellen Sie den Pfad?
  • Okay, das Beispiel-code, den Sie eingefügt, funktioniert gut für mich. (Ich bin auf Mono, aber.) Ist Ihr .NET okay? 😀
  • Kein Glück auf meiner Seite. Ich ging so weit wie die überprüfung, ob es wirklich ein problem mit .NET Fx auf meinem Rechner und testete es auf einer XP-VM und bekam die gleichen Ergebnisse. Der nächste Schritt ist zu prüfen, mein system mainboard. 😉
  • Es würde wahrscheinlich helfen, wenn Sie veröffentlicht ein Bild von dem, was die Rechteck Aussehen soll. Dein Beispiel ist ein Beispiel, wie der Modus Vertikal und die andere BackwardDiagonal. In Ihrer Antwort gepostet, wo sind Sie immer LinearGradientMode.Keiner? Keiner ist einer meiner Optionen.
  • Nicht sicher, ob ich verstanden habe, was du sagst, aber es ist wirklich egal, was Rechtecks, die Sie wählen. Finden Sie den einfachsten Paint-Beispiel oben. Über LinearGradientMode.Keine option, in meinem Szenario, ich bin das handling auf die gleiche Weise, ich bin Umgang mit den Vertikalen Modus. Da aber diese können für verschiedene Benutzer, verließ ich das Stück aus.

InformationsquelleAutor dotNET | 2012-12-21
Schreibe einen Kommentar