다음을 통해 공유


방법: TileBrush의 바둑판 크기 설정

이 예제에서는 TileBrush의 타일 크기를 설정하는 방법을 보여 줍니다. 기본적으로 TileBrush는 그리려는 영역을 완전히 채우는 단일 타일을 생성합니다. ViewportViewportUnits 속성을 설정하여 이 동작을 재정의할 수 있습니다.

Viewport 속성은 TileBrush에 대한 타일 크기를 지정합니다. 기본적으로 Viewport 속성의 값은 그리는 영역의 크기에 상대적입니다. Viewport 속성에 절대 타일 크기를 지정하려면 ViewportUnits 속성을 Absolute로 설정합니다.

예제

다음 예제에서는 TileBrush의 한 유형인 ImageBrush를 사용하여 직사각형을 타일로 칠합니다. 예제에서는 각 타일을 출력 영역(사각형)의 50% x 50%로 설정합니다. 결과적으로 이미지 프로젝션 4개를 사용한 사각형이 그려집니다.

다음 그림에서는 예제가 생성하는 출력을 보여 줍니다.

이미지 브러시로 타일링을 시연하는 네 개의 체리가 있는 사각형.


//
// Create an ImageBrush and set the size of each
// tile to 50% by 50% of the area being painted.
//
ImageBrush relativeTileSizeImageBrush = new ImageBrush();
relativeTileSizeImageBrush.ImageSource =
    new BitmapImage(new Uri(@"sampleImages\cherries_larger.jpg", UriKind.Relative));
relativeTileSizeImageBrush.TileMode = TileMode.Tile;

// Specify the size of the base tile.
// By default, the size of the Viewport is
// relative to the area being painted,
// so a value of 0.5 indicates 50% of the output
// area.
relativeTileSizeImageBrush.Viewport = new Rect(0, 0, 0.5, 0.5);

// Create a rectangle and paint it with the ImageBrush.
Rectangle relativeTileSizeExampleRectangle = new Rectangle();
relativeTileSizeExampleRectangle.Width = 200;
relativeTileSizeExampleRectangle.Height = 150;
relativeTileSizeExampleRectangle.Stroke = Brushes.LimeGreen;
relativeTileSizeExampleRectangle.StrokeThickness = 1;
relativeTileSizeExampleRectangle.Fill = relativeTileSizeImageBrush;

다음 예제에서는 ImageBrush를 만들고, 해당 Viewport0,0,25,25로 설정하고 해당 ViewportUnitsAbsolute로 설정한 후 이를 사용하여 다른 직사각형을 그립니다. 결과적으로 브러시는 너비 및 높이가 각각 25픽셀인 타일을 생성합니다.

다음 그림에서는 예제가 생성하는 출력을 보여 줍니다.

Viewport가 있는 타일링된 TileBrush를 보여주는 48개의 체리가 있는 사각형.


//
// Create an ImageBrush and set the size of each
// tile to 25 by 25 pixels.
//
ImageBrush absoluteTileSizeImageBrush = new ImageBrush();
absoluteTileSizeImageBrush.ImageSource =
     new BitmapImage(new Uri(@"sampleImages\cherries_larger.jpg", UriKind.Relative));
absoluteTileSizeImageBrush.TileMode = TileMode.Tile;

// Specify that the Viewport is to be interpreted as
// an absolute value.
absoluteTileSizeImageBrush.ViewportUnits = BrushMappingMode.Absolute;

// Set the size of the base tile. Had we left ViewportUnits set
// to RelativeToBoundingBox (the default value),
// each tile would be 25 times the size of the area being
// painted. Because ViewportUnits is set to Absolute,
// the following line creates tiles that are 25 by 25 pixels.
absoluteTileSizeImageBrush.Viewport = new Rect(0, 0, 25, 25);

// Create a rectangle and paint it with the ImageBrush.
Rectangle absoluteTileSizeExampleRectangle = new Rectangle();
absoluteTileSizeExampleRectangle.Width = 200;
absoluteTileSizeExampleRectangle.Height = 150;
absoluteTileSizeExampleRectangle.Stroke = Brushes.LimeGreen;
absoluteTileSizeExampleRectangle.StrokeThickness = 1;
absoluteTileSizeExampleRectangle.Fill = absoluteTileSizeImageBrush;

앞의 예제는 큰 샘플의 일부입니다. 전체 샘플을 보려면 ImageBrush 샘플을 참조하세요.

이 예제에서는 ImageBrush 클래스를 사용하지만 ViewportViewportUnits 속성은 다른 TileBrush 개체, 즉 DrawingBrushVisualBrush에 대해 동일하게 작동합니다. ImageBrush 및 다른 TileBrush 개체에 대한 자세한 내용은 이미지, 드로잉 및 시각적 표시로 그리기를 참조하세요.

참고 항목