Udostępnij za pośrednictwem


Jak malować obszar gradientem liniowym

W tym przykładzie LinearGradientBrush pokazano, jak za pomocą klasy malować obszar z gradientem liniowym. W poniższym przykładzie element Fill jest Rectangle malowany gradientem liniowym ukośnym, który przechodzi z żółtego na czerwony do niebieskiego do wapna zielonego.

Przykład

<!-- This rectangle is painted with a diagonal linear gradient. -->
<Rectangle Width="200" Height="100">
  <Rectangle.Fill>
    <LinearGradientBrush StartPoint="0,0" EndPoint="1,1">
      <GradientStop Color="Yellow" Offset="0.0" />
      <GradientStop Color="Red" Offset="0.25" />
      <GradientStop Color="Blue" Offset="0.75" />
      <GradientStop Color="LimeGreen" Offset="1.0" />
    </LinearGradientBrush>
  </Rectangle.Fill>
</Rectangle>
Rectangle diagonalFillRectangle = new Rectangle();
diagonalFillRectangle.Width = 200;
diagonalFillRectangle.Height = 100;

// Create a diagonal linear gradient with four stops.
LinearGradientBrush myLinearGradientBrush =
    new LinearGradientBrush();
myLinearGradientBrush.StartPoint = new Point(0,0);
myLinearGradientBrush.EndPoint = new Point(1,1);
myLinearGradientBrush.GradientStops.Add(
    new GradientStop(Colors.Yellow, 0.0));
myLinearGradientBrush.GradientStops.Add(
    new GradientStop(Colors.Red, 0.25));
myLinearGradientBrush.GradientStops.Add(
    new GradientStop(Colors.Blue, 0.75));
myLinearGradientBrush.GradientStops.Add(
    new GradientStop(Colors.LimeGreen, 1.0));

// Use the brush to paint the rectangle.
diagonalFillRectangle.Fill = myLinearGradientBrush;

Na poniższej ilustracji przedstawiono gradient utworzony przez poprzedni przykład.

Diagonal linear gradient

Aby utworzyć gradient liniowy w poziomie, zmień wartości StartPoint i LinearGradientBrushEndPoint na (0,0,5) i (1,0,5). W poniższym przykładzie Rectangle element jest malowany gradientem liniowym poziomym.

<!-- This rectangle is painted with a horizontal linear gradient. -->
<Rectangle Width="200" Height="100">
  <Rectangle.Fill>
    <LinearGradientBrush StartPoint="0,0.5" EndPoint="1,0.5">
      <GradientStop Color="Yellow" Offset="0.0" />
      <GradientStop Color="Red" Offset="0.25" />
      <GradientStop Color="Blue" Offset="0.75" />
      <GradientStop Color="LimeGreen" Offset="1.0" />
    </LinearGradientBrush>
  </Rectangle.Fill>
</Rectangle>
Rectangle horizontalFillRectangle = new Rectangle();
horizontalFillRectangle.Width = 200;
horizontalFillRectangle.Height = 100;

// Create a horizontal linear gradient with four stops.
LinearGradientBrush myHorizontalGradient =
    new LinearGradientBrush();
myHorizontalGradient.StartPoint = new Point(0,0.5);
myHorizontalGradient.EndPoint = new Point(1,0.5);
myHorizontalGradient.GradientStops.Add(
    new GradientStop(Colors.Yellow, 0.0));
myHorizontalGradient.GradientStops.Add(
    new GradientStop(Colors.Red, 0.25));
myHorizontalGradient.GradientStops.Add(
    new GradientStop(Colors.Blue, 0.75));
myHorizontalGradient.GradientStops.Add(
    new GradientStop(Colors.LimeGreen, 1.0));

// Use the brush to paint the rectangle.
horizontalFillRectangle.Fill = myHorizontalGradient;

Na poniższej ilustracji przedstawiono gradient utworzony przez poprzedni przykład.

A horizontal linear gradient

Aby utworzyć gradient liniowy pionowy, zmień wartości StartPoint i LinearGradientBrushEndPoint na (0,5,0) i (0,5,1). W poniższym przykładzie Rectangle element jest malowany gradientem liniowym pionowym.

<!-- This rectangle is painted with a vertical gradient. -->
<Rectangle Width="200" Height="100">
  <Rectangle.Fill>
    <LinearGradientBrush StartPoint="0.5,0" EndPoint="0.5,1">
      <GradientStop Color="Yellow" Offset="0.0" />
      <GradientStop Color="Red" Offset="0.25" />
      <GradientStop Color="Blue" Offset="0.75" />
      <GradientStop Color="LimeGreen" Offset="1.0" />
    </LinearGradientBrush>
  </Rectangle.Fill>
</Rectangle>
Rectangle verticalFillRectangle = new Rectangle();
verticalFillRectangle.Width = 200;
verticalFillRectangle.Height = 100;

// Create a vertical linear gradient with four stops.
LinearGradientBrush myVerticalGradient =
    new LinearGradientBrush();
myVerticalGradient.StartPoint = new Point(0.5,0);
myVerticalGradient.EndPoint = new Point(0.5,1);
myVerticalGradient.GradientStops.Add(
    new GradientStop(Colors.Yellow, 0.0));
myVerticalGradient.GradientStops.Add(
    new GradientStop(Colors.Red, 0.25));
myVerticalGradient.GradientStops.Add(
    new GradientStop(Colors.Blue, 0.75));
myVerticalGradient.GradientStops.Add(
    new GradientStop(Colors.LimeGreen, 1.0));

// Use the brush to paint the rectangle.
verticalFillRectangle.Fill = myVerticalGradient;

Na poniższej ilustracji przedstawiono gradient utworzony przez poprzedni przykład.

Vertical linear gradient

Uwaga

Przykłady w tym temacie używają domyślnego systemu współrzędnych do ustawiania punktów początkowych i punktów końcowych. Domyślny układ współrzędnych jest względny względem pola ograniczenia: 0 wskazuje 0 procent pola ograniczenia, a 1 wskazuje 100 procent pola ograniczenia. Ten układ współrzędnych można zmienić, ustawiając MappingMode właściwość na wartość BrushMappingMode.Absolute. Układ współrzędnych bezwzględnych nie jest powiązany z polem ograniczenia. Wartości są interpretowane bezpośrednio w przestrzeni lokalnej.

Aby uzyskać dodatkowe przykłady, zobacz Przykład pędzli. Aby uzyskać więcej informacji na temat gradientów i innych typów pędzli, zobacz Malowanie za pomocą kolorów stałych i gradientów — omówienie.