WPF LinearGradientBrush

19/05/2008 - 18:01 von Lars Steinmetz | Report spam
Ich habe ein paar Fragen zum System.Windows.Media.LinearGradientBrush:

Wenn ich einen Farbverlauf von Rot nach schwarz zeichne, dann sieht es
anders aus als ein Farbverlauf von Rot nach Transparent, wobei dann der
Formular-Hintergrund schwarz ist. Es erscheint dann immer ein leicht
gràulicher Schimmer. Bàh!

Warum ist das so?
Wie kann man erreichen, dass es _NICHT_ so ist, sondern identisch aussieht?
Wie kommt es, dass es unter GDI sehr wohl identisch aussieht?

Gruß Lars
 

Lesen sie die antworten

#1 Joachim Fuchs
22/05/2008 - 11:22 | Warnen spam
Hallo Lars,

der RGB-Wert für die transparente Seite ist für die Berechnung des Verlaufs
entscheidend. Wàhlst Du als Endfarbe "Transparent", dann wird der Wert 0,
FF, FF, FF, also weiß mit voller Transparenz angenommen. Dadurch ergeben
sich andere Zwischenwerte, so dass der Grauschleier entsteht.

Gib für beide Endpunkte dieselbe Farbe an und àndere nur den Alpha-Wert.
Dann sehen beide Varianten identisch aus. Beispiel:


<Window
xmlns:my="clr-namespace:System.Windows.Shapes;assembly=PresentationFramework"
x:Class="WpfApplication6.Window1"

xmlns="http://schemas.microsoft.com/winfx/...tion"

xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"

Title="Window1" Height="300" Width="300">

<Canvas Background="Black" >

<Rectangle Canvas.Top="30" Canvas.Left="10" Width="100" Height="200"
StrokeThickness="0" >

<Rectangle.Fill>

<LinearGradientBrush StartPoint="0,0" EndPoint="0,1">

<LinearGradientBrush.GradientStops>

<GradientStop Color="Red" Offset="0"></GradientStop>

<GradientStop Color="Black" Offset="1"></GradientStop>

</LinearGradientBrush.GradientStops>

</LinearGradientBrush>

</Rectangle.Fill>

</Rectangle>

<Rectangle Canvas.Top="30" Canvas.Left="110" Width="100" Height="200"
StrokeThickness="0" >

<Rectangle.Fill>

<LinearGradientBrush EndPoint="0,1" StartPoint="0,0">

<GradientStop Color="#FFFF0000" Offset="0.009"/>

<GradientStop Color="#00FF0000" Offset="1"/>

</LinearGradientBrush>

</Rectangle.Fill>

</Rectangle>

</Canvas>

</Window>





Gruß
Joachim

Dr. Joachim Fuchs - Autor - Dozent - Softwarearchitekt
MCT - MCAD
http://www.fuechse-online.de/beruflich/index.html -
http://vbnet.codebooks.de

Ähnliche fragen