728x90
728x170

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;

        }

 

결과

 

 

 

 

728x90
그리드형
Posted by kjun.kr
,