DrawingBrush 를 이용하여 체스판을 만들어 봅니다.
체스판의 한 조각을 만들어 이어 붙이는 예제입니다.
한조각은 아래 그림과 같으며
DrawingBrush 의 Viewport 와 TileMode 를 이용해 이어붙여 체스판을 완성합니다.
MainWindow.xaml.cs
private void CreateChessBoardWithDrawingBrush() { // 반복하여 그려질 사각형의 바탕이 되는 흰색배경의 사각형을 만듭니다. GeometryDrawing whiteRectDrawing = new GeometryDrawing(Brushes.White, null, new RectangleGeometry(new Rect(0, 0, 400, 400)));
// 검은색으로 채울 사각형을 정의합니다. GeometryGroup blackGeometryGroup = new GeometryGroup(); blackGeometryGroup.Children.Add(new RectangleGeometry(new Rect(0, 0, 200, 200))); blackGeometryGroup.Children.Add(new RectangleGeometry(new Rect(200, 200, 200, 200)));
// 정의한 사격형을 검은색으로 체웁니다. GeometryDrawing blackRectDrawing = new GeometryDrawing(new SolidColorBrush(Colors.Black), null, blackGeometryGroup);
// 배경에 해당하는 흰색 사각형과 체크표시할 검은색 사각형을 그룹으로 묶습니다. DrawingGroup checkersDrawingGroup = new DrawingGroup(); checkersDrawingGroup.Children.Add(whiteRectDrawing); checkersDrawingGroup.Children.Add(blackRectDrawing);
// DrawingGroup 를 요소로 가지는 DrawingBrush 를 정의합니다. DrawingBrush chessBrush = new DrawingBrush() { Drawing = checkersDrawingGroup };
// DrawingGroup 의 Viewport 와 TileMode 를 정의합니다. chessBrush.Viewport = new Rect(0, 0, 0.25, 0.25); // 1 기준으로 0.25 인경우 4칸.4줄로 나눠집니다. chessBrush.TileMode = TileMode.Tile;
// 큰 사각형을 정의하여 DrawingBrush 로 내부를 그리도록 합니다. Rectangle chessRectangle = new Rectangle(); chessRectangle.Width = 300; chessRectangle.Height = 300; chessRectangle.Fill = chessBrush;
Content = chessRectangle; } |
결과
'C# > WPF' 카테고리의 다른 글
[WPF] Image 에 코드로 이미지 경로 지정하기 (0) | 2020.07.27 |
---|---|
[WPF] RelativeSource (0) | 2020.07.19 |
[WPF] CollectionView 이용하여 데이터 Navigate(탐색) 하기 (0) | 2020.07.12 |
[WPF] Control 의 ControlTemplate 구조 나타내는 프로그램 (0) | 2020.07.11 |
[WPF] Style.Triggers 이용하여 Control 변화 주기 (0) | 2020.07.10 |