次の方法で共有


方法 : TileBrush の水平方向および垂直方向の配置を設定する

この例では、タイル内にあるコンテンツの水平方向の配置と垂直方向の配置を制御する方法を示します。 TileBrush の水平方向および垂直方向の配置を制御するには、その AlignmentX プロパティと AlignmentY プロパティを使用します。

次のいずれかの条件に当てはまる場合は、TileBrushAlignmentX プロパティと AlignmentY プロパティが使用されます。

使用例

TileBrush の一種である DrawingBrush のコンテンツをタイルの左上隅に配置する例を次に示します。 コンテンツの配置のため、この例では、DrawingBrushAlignmentX プロパティを LeftAlignmentY プロパティを Top に設定しています。 この例を実行すると、次の出力が生成されます。

コンテンツを左上隅に配置した TileBrush

左上に配置された TileBrush

            '
            ' Create a TileBrush and align its
            ' content to the top-left of its tile.
            '
            Dim topLeftAlignedTileBrush As New DrawingBrush()
            topLeftAlignedTileBrush.AlignmentX = AlignmentX.Left
            topLeftAlignedTileBrush.AlignmentY = AlignmentY.Top

            ' Set Stretch to None so that the brush's
            ' content doesn't automatically expand to
            ' fill the entire tile. 
            topLeftAlignedTileBrush.Stretch = Stretch.None

            ' Define the brush's content.
            Dim ellipses As New GeometryGroup()
            ellipses.Children.Add(New EllipseGeometry(New Point(50, 50), 20, 45))
            ellipses.Children.Add(New EllipseGeometry(New Point(50, 50), 45, 20))
            Dim drawingPen As New Pen(Brushes.Gray, 10)
            Dim ellipseDrawing As New GeometryDrawing(Brushes.Blue, drawingPen, ellipses)
            topLeftAlignedTileBrush.Drawing = ellipseDrawing

            ' Use the brush to paint a rectangle.
            Dim rectangle1 As New Rectangle()
            With rectangle1
                .Width = 150
                .Height = 150
                .Stroke = Brushes.Red
                .StrokeThickness = 2
                .Margin = New Thickness(20)
                .Fill = topLeftAlignedTileBrush
            End With

            //
            // Create a TileBrush and align its
            // content to the top-left of its tile.
            //
            DrawingBrush topLeftAlignedTileBrush = new DrawingBrush();
            topLeftAlignedTileBrush.AlignmentX = AlignmentX.Left;
            topLeftAlignedTileBrush.AlignmentY = AlignmentY.Top;

            // Set Stretch to None so that the brush's
            // content doesn't automatically expand to
            // fill the entire tile. 
            topLeftAlignedTileBrush.Stretch = Stretch.None;

            // Define the brush's content.
            GeometryGroup ellipses = new GeometryGroup();
            ellipses.Children.Add(new EllipseGeometry(new Point(50, 50), 20, 45));
            ellipses.Children.Add(new EllipseGeometry(new Point(50, 50), 45, 20));
            Pen drawingPen = new Pen(Brushes.Gray, 10);
            GeometryDrawing ellipseDrawing = new GeometryDrawing(Brushes.Blue, drawingPen, ellipses);
            topLeftAlignedTileBrush.Drawing = ellipseDrawing;

            // Use the brush to paint a rectangle.
            Rectangle rectangle1 = new Rectangle();
            rectangle1.Width = 150;
            rectangle1.Height = 150;
            rectangle1.Stroke = Brushes.Red;
            rectangle1.StrokeThickness = 2;
            rectangle1.Margin = new Thickness(20);
            rectangle1.Fill = topLeftAlignedTileBrush;

<Rectangle
  Width="150" Height="150"
  Stroke="Red" StrokeThickness="2"
  Margin="20">
  <Rectangle.Fill>

    <!-- This brush's content is aligned to the top-left
         of its tile. -->
    <DrawingBrush  
      Stretch="None"
      AlignmentX="Left"
      AlignmentY="Top">
      <DrawingBrush.Drawing>
        <GeometryDrawing Brush="MediumBlue">
          <GeometryDrawing.Geometry>
            <GeometryGroup>
              <EllipseGeometry RadiusX="20" RadiusY="45" Center="50,50" />
              <EllipseGeometry RadiusX="45" RadiusY="20" Center="50,50" />
            </GeometryGroup>
          </GeometryDrawing.Geometry>
          <GeometryDrawing.Pen>
            <Pen Brush="Gray" Thickness="10" />
          </GeometryDrawing.Pen>
        </GeometryDrawing>
      </DrawingBrush.Drawing>
    </DrawingBrush>
  </Rectangle.Fill>
</Rectangle>

次の例では、AlignmentX プロパティを RightAlignmentY プロパティを Bottom に設定して、DrawingBrush のコンテンツをタイルの右下隅に配置します。 この例の出力は、次のようになります。

コンテンツを右下隅に配置した TileBrush

右下に配置された TileBrush

            '
            ' Create a TileBrush and align its
            ' content to the bottom-right of its tile.
            '
            Dim bottomRightAlignedTileBrush As New DrawingBrush()
            With bottomRightAlignedTileBrush
                .AlignmentX = AlignmentX.Right
                .AlignmentY = AlignmentY.Bottom
                .Stretch = Stretch.None

                ' Define the brush's content.
                .Drawing = ellipseDrawing
            End With

            ' Use the brush to paint a rectangle.
            Dim rectangle2 As New Rectangle()
            With rectangle2
                .Width = 150
                .Height = 150
                .Stroke = Brushes.Red
                .StrokeThickness = 2
                .Margin = New Thickness(20)
                .Fill = bottomRightAlignedTileBrush
            End With

            //
            // Create a TileBrush and align its
            // content to the bottom-right of its tile.
            //
            DrawingBrush bottomRightAlignedTileBrush = new DrawingBrush();
            bottomRightAlignedTileBrush.AlignmentX = AlignmentX.Right;
            bottomRightAlignedTileBrush.AlignmentY = AlignmentY.Bottom;
            bottomRightAlignedTileBrush.Stretch = Stretch.None;

            // Define the brush's content.
            bottomRightAlignedTileBrush.Drawing = ellipseDrawing;

            // Use the brush to paint a rectangle.
            Rectangle rectangle2 = new Rectangle();
            rectangle2.Width = 150;
            rectangle2.Height = 150;
            rectangle2.Stroke = Brushes.Red;
            rectangle2.StrokeThickness = 2;
            rectangle2.Margin = new Thickness(20);
            rectangle2.Fill = bottomRightAlignedTileBrush;

<Rectangle
  Width="150" Height="150"
  Stroke="Red" StrokeThickness="2"
  Margin="20">
  <Rectangle.Fill>

    <!-- This brush's content is aligned to the bottom right
         of its tile. -->
    <DrawingBrush 
      Stretch="None"
      AlignmentX="Right"
      AlignmentY="Bottom">
      <DrawingBrush.Drawing>
        <GeometryDrawing Brush="MediumBlue">
          <GeometryDrawing.Geometry>
            <GeometryGroup>
              <EllipseGeometry RadiusX="20" RadiusY="45" Center="50,50" />
              <EllipseGeometry RadiusX="45" RadiusY="20" Center="50,50" />
            </GeometryGroup>
          </GeometryDrawing.Geometry>
          <GeometryDrawing.Pen>
            <Pen Brush="Gray" Thickness="10" />
          </GeometryDrawing.Pen>
        </GeometryDrawing>
      </DrawingBrush.Drawing>
    </DrawingBrush>
  </Rectangle.Fill>
</Rectangle>

次の例では、AlignmentX プロパティを LeftAlignmentY プロパティを Top に設定して、DrawingBrush のコンテンツをタイルの左上隅に配置します。 さらに、DrawingBrushViewport および TileMode を設定して、タイル パターンを生成します。 この例の出力は、次のようになります。

基本タイルの左上部分にコンテンツを配置したタイル パターン

左上に並べて配置された TileBrush

この図では、コンテンツがどのように配置されるかを確認できるように、基本タイルを強調表示しています。 DrawingBrush のコンテンツが基本タイルの水平方向を完全に埋めているため、AlignmentX の設定は影響を及ぼさないことに注意してください。

            '
            ' Create a TileBrush that generates a 
            ' tiled pattern and align its
            ' content to the top-left of its tile.
            '
            Dim tiledTopLeftAlignedTileBrush As New DrawingBrush()
            With tiledTopLeftAlignedTileBrush
                .AlignmentX = AlignmentX.Left
                .AlignmentY = AlignmentY.Top
                .Stretch = Stretch.Uniform

                ' Set the brush's Viewport and TileMode to produce a 
                ' tiled pattern.
                .Viewport = New Rect(0, 0, 0.25, 0.5)
                .TileMode = TileMode.Tile

                ' Define the brush's content.
                .Drawing = ellipseDrawing
            End With

            ' Use the brush to paint a rectangle.
            Dim rectangle3 As New Rectangle()
            With rectangle3
                .Width = 150
                .Height = 150
                .Stroke = Brushes.Black
                .StrokeThickness = 2
                .Margin = New Thickness(20)
                .Fill = tiledTopLeftAlignedTileBrush
            End With

            //
            // Create a TileBrush that generates a 
            // tiled pattern and align its
            // content to the top-left of its tile.
            //
            DrawingBrush tiledTopLeftAlignedTileBrush = new DrawingBrush();
            tiledTopLeftAlignedTileBrush.AlignmentX = AlignmentX.Left;
            tiledTopLeftAlignedTileBrush.AlignmentY = AlignmentY.Top;
            tiledTopLeftAlignedTileBrush.Stretch = Stretch.Uniform;

            // Set the brush's Viewport and TileMode to produce a 
            // tiled pattern.
            tiledTopLeftAlignedTileBrush.Viewport = new Rect(0, 0, 0.25, 0.5);
            tiledTopLeftAlignedTileBrush.TileMode = TileMode.Tile;

            // Define the brush's content.
            tiledTopLeftAlignedTileBrush.Drawing = ellipseDrawing;

            // Use the brush to paint a rectangle.
            Rectangle rectangle3 = new Rectangle();
            rectangle3.Width = 150;
            rectangle3.Height = 150;
            rectangle3.Stroke = Brushes.Black;
            rectangle3.StrokeThickness = 2;
            rectangle3.Margin = new Thickness(20);
            rectangle3.Fill = tiledTopLeftAlignedTileBrush;

<Rectangle
 Width="150" Height="150"
 Stroke="Black" StrokeThickness="2"
 Margin="20">
  <Rectangle.Fill>

    <!-- This brush's content is aligned to the top left
         of its tile.  -->
    <DrawingBrush 
      Stretch="Uniform"
      Viewport="0,0,0.25,0.5"
      TileMode="Tile" 
      AlignmentX="Left"
      AlignmentY="Top">
      <DrawingBrush.Drawing>
        <GeometryDrawing Brush="MediumBlue">
          <GeometryDrawing.Geometry>
            <GeometryGroup>
              <EllipseGeometry RadiusX="20" RadiusY="45" Center="50,50" />
              <EllipseGeometry RadiusX="45" RadiusY="20" Center="50,50" />
            </GeometryGroup>
          </GeometryDrawing.Geometry>
          <GeometryDrawing.Pen>
            <Pen Brush="Gray" Thickness="10" />
          </GeometryDrawing.Pen>
        </GeometryDrawing>
      </DrawingBrush.Drawing>
    </DrawingBrush>
  </Rectangle.Fill>
</Rectangle>

最後の例では、AlignmentX プロパティを RightAlignmentY プロパティを Bottom に設定して、並べて表示された DrawingBrush のコンテンツを基本タイルの右下に配置します。 この例の出力は、次のようになります。

基本タイルの右下部分にコンテンツを配置したタイル パターン

右下に並べて配置された TileBrush

ここでも、DrawingBrush のコンテンツが基本タイルの水平方向を完全に埋めているため、AlignmentX の設定は影響を及ぼしません。

            '
            ' Create a TileBrush and align its
            ' content to the bottom-right of its tile.
            '
            Dim bottomRightAlignedTileBrush As New DrawingBrush()
            With bottomRightAlignedTileBrush
                .AlignmentX = AlignmentX.Right
                .AlignmentY = AlignmentY.Bottom
                .Stretch = Stretch.None

                ' Define the brush's content.
                .Drawing = ellipseDrawing
            End With

            ' Use the brush to paint a rectangle.
            Dim rectangle2 As New Rectangle()
            With rectangle2
                .Width = 150
                .Height = 150
                .Stroke = Brushes.Red
                .StrokeThickness = 2
                .Margin = New Thickness(20)
                .Fill = bottomRightAlignedTileBrush
            End With

            //
            // Create a TileBrush and align its
            // content to the bottom-right of its tile.
            //
            DrawingBrush bottomRightAlignedTileBrush = new DrawingBrush();
            bottomRightAlignedTileBrush.AlignmentX = AlignmentX.Right;
            bottomRightAlignedTileBrush.AlignmentY = AlignmentY.Bottom;
            bottomRightAlignedTileBrush.Stretch = Stretch.None;

            // Define the brush's content.
            bottomRightAlignedTileBrush.Drawing = ellipseDrawing;

            // Use the brush to paint a rectangle.
            Rectangle rectangle2 = new Rectangle();
            rectangle2.Width = 150;
            rectangle2.Height = 150;
            rectangle2.Stroke = Brushes.Red;
            rectangle2.StrokeThickness = 2;
            rectangle2.Margin = new Thickness(20);
            rectangle2.Fill = bottomRightAlignedTileBrush;

<Rectangle
  Width="150" Height="150"
  Stroke="Red" StrokeThickness="2"
  Margin="20">
  <Rectangle.Fill>

    <!-- This brush's content is aligned to the bottom right
         of its tile. -->
    <DrawingBrush 
      Stretch="None"
      AlignmentX="Right"
      AlignmentY="Bottom">
      <DrawingBrush.Drawing>
        <GeometryDrawing Brush="MediumBlue">
          <GeometryDrawing.Geometry>
            <GeometryGroup>
              <EllipseGeometry RadiusX="20" RadiusY="45" Center="50,50" />
              <EllipseGeometry RadiusX="45" RadiusY="20" Center="50,50" />
            </GeometryGroup>
          </GeometryDrawing.Geometry>
          <GeometryDrawing.Pen>
            <Pen Brush="Gray" Thickness="10" />
          </GeometryDrawing.Pen>
        </GeometryDrawing>
      </DrawingBrush.Drawing>
    </DrawingBrush>
  </Rectangle.Fill>
</Rectangle>

ここでは、DrawingBrush オブジェクトを例に取って AlignmentX プロパティと AlignmentY プロパティの使用方法を示しています。 これらのプロパティは、DrawingBrushImageBrushVisualBrush のすべてのタイル ブラシでまったく同じように動作します。 タイル ブラシの詳細については、「イメージ、描画、およびビジュアルによる塗りつぶし」を参照してください。

参照

参照

DrawingBrush

ImageBrush

VisualBrush

概念

イメージ、描画、およびビジュアルによる塗りつぶし