Site logo
Site logo
Programmieren aus Leidenschaft
Programmieren aus Leidenschaft

Brushes Teil 2


Eine andere Form des Farbverlaufs ist der RadialGradientBrush, der eine kreisförmige Objektfüllung ermöglicht. Einer der wichtigsten Parameter ist Center, mit dem das Zentrum des zu füllenden Bereiches bestimmt wird. Wird kein Zentrum definiert so wird automatisch die Mitte des Objektes verwendet.
<Rectangle Margin="15">
   <Rectangle.Fill>
   <RadialGradientBrush Center="0.5,0.5">
      <GradientStop Offset="0" Color="Red"/>
      <GradientStop Offset="1" Color="Yellow"/>
   </RadialGradientBrush>
   </Rectangle.Fill>
</Rectangle>
stacks_image_CF72E84D-F6DA-48C1-BF76-45F999DF65A9
Verschiebt man das Zentrum ein wenig so ist das Resultat möglicherweise unerwartet und gibt erst auf den zweiten Blick Sinn.
<Rectangle Margin="15">
   <Rectangle.Fill>
   ;<RadialGradientBrush Center="0.8,0.8">
      <GradientStop Offset="0" Color="Red"/>
      <GradientStop Offset="1" Color="Yellow"/>
   </RadialGradientBrush>
   </Rectangle.Fill>
</Rectangle>
stacks_image_8C538F35-59C3-422F-AB6C-36D58CA4414E
Center bestimmt, wie zuvor erwähnt, das Zentrum des zu füllenden Bereiches, nicht aber das Zentrum des Farbverlaufs. Dieses Zentrum definiert nämlich GradientOrigin. Setzt man Center und GradientOrigin auf die gleiche Position, sieht das Ergebniss ganz anders aus.
<Rectangle Margin="15">
   <Rectangle.Fill>
   <RadialGradientBrush GradientOrigin="0.8,0.8" Center="0.8,0.8">
      <GradientStop Offset="0" Color="Red"/>
      <GradientStop Offset="1" Color="Yellow"/>
   </RadialGradientBrush>
   </Rectangle.Fill>
</Rectangle>
stacks_image_CE33FEAE-2486-453A-891E-B88CA683CD45
Inzwischen haben Sie sich sicherlich auch die Frage gestellt, warum der Farbverlauf nicht kreisrund, sondern elliptisch ist. Der Grund dafür verbirgt sich in den Eigenschaften RadiusX und RadiusY. Sind diese Werte nicht gesetzt, wird für beide Achsen ein Radius von 0.5 verwendet. Dieser Wert ist aber relativ zu den Seitenrändern. Da es sich aber um ein Rechteck und nicht um ein Quadrat handelt, wird der Farbverlauf dem entsprechend angepasst und erscheint als Elipse. Will man trotzdem einen kreisförmigen Verlauf erzeugen, müssen die Radien dem Seitenverhältnis entsprechend angepasst werden.
<Rectangle Margin="15">
   <Rectangle.Fill>
   <RadialGradientBrush Center="0.5,0.5" RadiusX="0.5" RadiusY="0.75">
      <GradientStop Offset="0" Color="Red"/>
      <GradientStop Offset="1" Color="Yellow"/>
   </RadialGradientBrush>
   </Rectangle.Fill>
</Rectangle>
stacks_image_02CFB12B-88C6-47EB-882D-453F2767F20A