In geometry, a rectangle is defined as a quadrilateral where all four of its angles are right angles (90 degrees). The <Rectangle /> element of XAML draws a rectangle. The Height and Width attributes represent the height and width of the rectangle. The Stroke and Stroke Thickness represents the color and thickness of the rectangle boundary. In this example, I am showing you how to draw a rectangle static and dynamic. Static rectangle means the rectangle is drawn totally based on XAML code while dynamic rectangle means, I create the rectangle using code in the code behind file. This code shows how to draw a?rectangle:
<!--static rectangle --> <Canvas Grid.Column="0" Grid.Row="0" HorizontalAlignment="Left" Margin="50,20,0,0"> ????? <Rectangle Width="150" Height="150" Stroke="Red" Fill="Gray" StrokeThickness="2"></Rectangle> </Canvas> <TextBlock Grid.Column="0" Grid.Row="0" HorizontalAlignment="Center">Static Rectangle</TextBlock>
Draw a rectangle dynamically:
<!--dynamic rectangle --> <Canvas x:Name="canvas" Grid.Column="1" Grid.Row="0" Margin="50,20,0,0"></Canvas> <TextBlock Grid.Column="1" Grid.Row="0" HorizontalAlignment="Center">Dynamic Rectangle</TextBlock>
private void DrawRectangle() { ??????????? Rectangle exampleRectangle = new Rectangle(); ??????????? exampleRectangle.Width = 150; ??????????? exampleRectangle.Height = 150; ??????????? // Create a SolidColorBrush and use it to ??????????? // paint the rectangle. ??????????? SolidColorBrush myBrush = new SolidColorBrush(Colors.Green); ??????????? exampleRectangle.Stroke = Brushes.Red; ??????????? exampleRectangle.StrokeThickness = 4; ??????????? exampleRectangle.Fill = myBrush; ??????????? canvas.Children.Insert(0, exampleRectangle); ?}
Result looks like this:
Figure 1.
? This code shows how draw rectangle with Radius. ? <!--static rectangle with radius --> ??????? <Canvas Grid.Column="0" Grid.Row="1" HorizontalAlignment="Left" Margin="50,20,0,0"> ?????? ?????<Rectangle Width="150" Height="150" RadiusX="10" RadiusY="10" Stroke="Red" Fill="Gray" StrokeThickness="2"></Rectangle> ??????? </Canvas> ??????? <TextBlock Grid.Column="0" Grid.Row="1" HorizontalAlignment="Center">Static Rectangle Radius</TextBlock>
Make dynamically:
<!--dynamic rectangle with radius --> ??????? <Canvas x:Name="canvas1" Grid.Column="1" Grid.Row="1" Margin="50,20,0,0"></Canvas> ??????? <TextBlock Grid.Column="1" Grid.Row="1" HorizontalAlignment="Center">Dynamic Rectangle Radius</TextBlock>
? private void RadiusRectangle() ??????? { ??????????? Rectangle exampleRectangle1 = new Rectangle(); ??????????? exampleRectangle1.Width = 150; ??????????? exampleRectangle1.Height = 150; ??????????? exampleRectangle1.RadiusX = 10; ??????????? exampleRectangle1.RadiusY = 10; ??????????? // Create a SolidColorBrush and use it to ??????????? // paint the rectangle. ??????????? SolidColorBrush myBrush = new SolidColorBrush(Colors.Green); ??????????? exampleRectangle1.Stroke = Brushes.Red; ???????? ???exampleRectangle1.StrokeThickness = 4; ??????????? exampleRectangle1.Fill = myBrush; ??????????? canvas1.Children.Insert(0, exampleRectangle1); ? ? ??????? } Result:
Figure 2.
? This code shows how to make a rectangle using Gradient colors. ? <!--static rectangle with gradient colors--> ??????? <Canvas Grid.Column="0" Grid.Row="2" HorizontalAlignment="Left" Margin="50,20,0,0"> ??????????? <Rectangle Width="150" Height="150"> ????????????? <Rectangle.Fill> ??????????????? <LinearGradientBrush> ????????????????? <GradientStop Color="Yellow" Offset="0.0" /> ????????????????? <GradientStop Color="Orange" Offset="0.5" /> ????????????????? <GradientStop Color="Red" Offset="1.0" /> ??????????????? </LinearGradientBrush> ????????????? </Rectangle.Fill> ??????????? </Rectangle> ??????? </Canvas> ??????? <TextBlock Grid.Column="0" Grid.Row="2" HorizontalAlignment="Center">Static Rectangle Gradient</TextBlock>
Make Dynamically: ? <!--dynamic rectangle with gradient colors--> ??????? <Canvas x:Name="canvas2" Grid.Column="1" Grid.Row="2" Margin="50,20,0,0"></Canvas> ??????? <TextBlock Grid.Column="1" Grid.Row="2" HorizontalAlignment="Center">Dynamic Rectangle Gradient</TextBlock> private void GradientRectangle() ??????? { ??????????? Rectangle exampleRectangle = new Rectangle(); ??????????? exampleRectangle.Width = 150; ??????????? exampleRectangle.Height = 150; ? ? ??????????? // Create a RadialGradientBrush and use it to ??????????? // paint the rectangle. ??????????? RadialGradientBrush myBrush = new RadialGradientBrush(); ??????????? myBrush.GradientOrigin = new Point(0.75, 0.25); ??????????? myBrush.GradientStops.Add(new GradientStop(Colors.Yellow, 0.0)); ??????????? myBrush.GradientStops.Add(new GradientStop(Colors.Orange, 0.5)); ??????????? myBrush.GradientStops.Add(new GradientStop(Colors.Red, 1.0)); ? ? ??????????? exampleRectangle.Fill = myBrush; ??????????? canvas2.Children.Insert(0, exampleRectangle); ??????? }
Figure 3.
? This code shows how to draw a rectangle paint with an image.
<!--static paint with image--> ??????? <Canvas Grid.Column="0" Grid.Row="3" HorizontalAlignment="Left" Margin="50,20,0,0"> ??????????? <Rectangle Width="150" Height="150">??????????????? ??????????????? <Rectangle.Fill> ??????????????????? <ImageBrush ImageSource="sampleImages\san20a.jpg" ?/> ??????????????? </Rectangle.Fill> ??????????? </Rectangle> ??????? </Canvas> ??????? <TextBlock Grid.Column="0" Grid.Row="3" HorizontalAlignment="Center">Static Rectangle paint with image</TextBlock>
Dynamically:
<!--dynamic paint with image--> <Canvas x:Name="canvas3" Grid.Column="1" Grid.Row="3" Margin="50,20,0,0"></Canvas> <TextBlock Grid.Column="1" Grid.Row="3" HorizontalAlignment="Center">Dynamic Rectangle paint with image</TextBlock> ? private void PaintWithImageRectangle() ??????? { ??????????? Rectangle exampleRectangle = new Rectangle(); ??????????? exampleRectangle.Width = 150; ??????????? exampleRectangle.Height = 150; ? ? ??????????? // Create an ImageBrush and use it to ??????????? // paint the rectangle. ??????????? ImageBrush myBrush = new ImageBrush(); ??????????? myBrush.ImageSource = ??????????????? new BitmapImage(new Uri(@"C:\Users\Raj\Documents\Visual Studio 2008\Projects\Chapter1\Chapter1\sampleImages\san20a.jpg", UriKind.Relative)); ? ? ??????????? exampleRectangle.Fill = myBrush; ??????????? canvas3.Children.Insert(0, exampleRectangle); ??????? }
Result:
Figure 4. ? This code shows how to draw paint a rectangle with visual effects. <!--static paint with visual--> ??????? <Canvas Grid.Column="2" Grid.Row="0" HorizontalAlignment="Left" Margin="50,20,0,0"> ??????????? <Rectangle Width="150" Height="150" Stroke="Red" StrokeThickness="4"> ??????????????? <Rectangle.Fill> ??????????????????? <VisualBrush TileMode="Tile"> ??????????????????????? <VisualBrush.Visual> ??????????????????????????? <StackPanel> ??????????????????????????????? <StackPanel.Background> ??????????????????????????????????? <DrawingBrush> ??????????????????????????????????????? <DrawingBrush.Drawing> ??????????????????????????????????????????? <GeometryDrawing> ??????????????????????????????????????????????? <GeometryDrawing.Brush> ??????????????????????????????????????????????????? <RadialGradientBrush> ??????????????????????????????????????????????????????? <GradientStop Color="MediumBlue" Offset="0.0" /> ??????????????????????????????????????????????????????? <GradientStop Color="White" Offset="1.0" /> ??????????????????????????????????????????????????? </RadialGradientBrush> ??????????????????????????????????????????????? </GeometryDrawing.Brush> ??????????????????????????????????????????????? <GeometryDrawing.Geometry> ??????????????????????????????????????????????????? <GeometryGroup> ??????????????????????????????????????????????????????? <RectangleGeometry Rect="0,0,50,50" /> ???????????? ???????????????????????????????????????????<RectangleGeometry Rect="50,50,50,50" /> ??????????????????????????????????????????????????? </GeometryGroup> ??????????????????????????????????????????????? </GeometryDrawing.Geometry> ?????????????????????????? ?????????????????</GeometryDrawing> ??????????????????????????????????????? </DrawingBrush.Drawing> ??????????????????????????????????? </DrawingBrush> ??????????????????????????????? </StackPanel.Background> ??????????????????????????????? <TextBlock FontSize="10pt" Margin="10">Raj Beniwal</TextBlock> ??????????????????????????? </StackPanel> ??????????????????????? </VisualBrush.Visual> ??????????????????? </VisualBrush> ??????????????? </Rectangle.Fill> ??????????? </Rectangle> ??????? </Canvas> ??? ????<TextBlock Grid.Column="2" Grid.Row="0" HorizontalAlignment="Center">Static Rectangle paint with visual</TextBlock>
Dynamically: ? <!--dynamic paint with image--> <Canvas x:Name="canvas4" Grid.Column="3" Grid.Row="0" Margin="50,20,0,0"></Canvas> <TextBlock Grid.Column="3" Grid.Row="0" HorizontalAlignment="Center">Dynamic Rectangle paint with visual</TextBlock> private void VisualRectangle() ??????? { ??????????? Rectangle exampleRectangle = new Rectangle(); ??????????? exampleRectangle.Width = 150; ??????????? exampleRectangle.Height = 150; ??????????? exampleRectangle.StrokeThickness = 4; ??????????? exampleRectangle.Stroke = Brushes.Red; ? ? ??????????? // Create a VisualBrush and use it ??????????? // to paint the rectangle. ??????????? VisualBrush myBrush = new VisualBrush(); ? ? ??????????? // ??????????? // Create the brush's contents. ??????????? // ??????????? StackPanel aPanel = new StackPanel(); ? ? ??????????? // Create a DrawingBrush and use it to ??????????? // paint the panel. ??????????? DrawingBrush myDrawingBrushBrush = new DrawingBrush(); ??????????? GeometryGroup aGeometryGroup = new GeometryGroup(); ??????????? aGeometryGroup.Children.Add(new RectangleGeometry(new Rect(0, 0, 50, 50))); ??????????? aGeometryGroup.Children.Add(new RectangleGeometry(new Rect(50, 50, 50, 50))); ??????????? RadialGradientBrush checkerBrush = new RadialGradientBrush(); ??????????? checkerBrush.GradientStops.Add(new GradientStop(Colors.Green, 0.0)); ??????????? checkerBrush.GradientStops.Add(new GradientStop(Colors.White, 1.0)); ??????????? GeometryDrawing checkers = new GeometryDrawing(checkerBrush, null, aGeometryGroup); ??????????? myDrawingBrushBrush.Drawing = checkers; ??????????? aPanel.Background = myDrawingBrushBrush; ? ? ??????????? // Create some text. ??????????? TextBlock someText = new TextBlock(); ??????????? someText.Text = "Raj Beniwal"; ??????????? FontSizeConverter fSizeConverter = new FontSizeConverter(); ??????????? someText.FontSize = (double)fSizeConverter.ConvertFromString("10pt"); ??? ????????someText.Margin = new Thickness(10); ? ? ??????????? aPanel.Children.Add(someText); ? ? ??????????? myBrush.Visual = aPanel; ??????????? exampleRectangle.Fill = myBrush; ??????????? canvas4.Children.Insert(0, exampleRectangle); ? ? ??????? }
Figure 5. ? This code shows how to draw and paint a rectangle with drawing brush. <!--static paint with drawing--> ??????? <Canvas Grid.Column="2" Grid.Row="1" HorizontalAlignment="Left" Margin="50,20,0,0"> ??????????? <Rectangle Width="150" Height="150"> ??????????????? <Rectangle.Fill> ??????????????????? <DrawingBrush Viewport="0,0,0.25,0.25" TileMode="Tile"> ??????????????????????? <DrawingBrush.Drawing> ??????????????????????????? <DrawingGroup> ??????????????????????????????? <GeometryDrawing Brush="White"> ??????????????????????????????????? <GeometryDrawing.Geometry> ?????????????????????? ?????????????????<RectangleGeometry Rect="0,0,100,100" /> ??????????????????????????????????? </GeometryDrawing.Geometry> ??????????????????????????????? </GeometryDrawing> ? ? ??????????????????????????????? <GeometryDrawing> ??????????????????????????????? ????<GeometryDrawing.Geometry> ??????????????????????????????????????? <GeometryGroup> ??????????????????????????????????????????? <RectangleGeometry Rect="0,0,50,50" /> ??????????????????????????????????????????? <RectangleGeometry Rect="50,50,50,50" /> ??????????????????????????????????????? </GeometryGroup> ??????????????????????????????????? </GeometryDrawing.Geometry> ??????????????????????????????????? <GeometryDrawing.Brush> ??????????????????????????????????????? <LinearGradientBrush> ????????????? ??????????????????????????????<GradientStop Offset="0.0" Color="Red" /> ??????????????????????????????????????????? <GradientStop Offset="1.0" Color="Green" /> ??????????????????????????????????????? </LinearGradientBrush> ???????????????????????????????? ???</GeometryDrawing.Brush> ??????????????????????????????? </GeometryDrawing> ??????????????????????????? </DrawingGroup> ??????????????????????? </DrawingBrush.Drawing> ??????????????????? </DrawingBrush> ??????????????? </Rectangle.Fill> ??????????? </Rectangle> ??????? </Canvas> ??????? <TextBlock Grid.Column="2" Grid.Row="1" HorizontalAlignment="Center">Static Rectangle paint with drawing</TextBlock>
Dynamic: ? <!--dynamic paint with drawing--> <Canvas x:Name="canvas5" Grid.Column="3" Grid.Row="1" Margin="50,20,0,0"></Canvas> <TextBlock Grid.Column="3" Grid.Row="1" HorizontalAlignment="Center">Dynamic Rectangle paint with drawing</TextBlock> private void PaintWithDrawing() ??????? { ??????????? Rectangle exampleRectangle = new Rectangle(); ??????? ????exampleRectangle.Width = 150; ??????????? exampleRectangle.Height = 150; ? ? ??????????? // Create a DrawingBrush and use it to ??????????? // paint the rectangle. ??????????? DrawingBrush myBrush = new DrawingBrush(); ? ? ??????????? GeometryDrawing backgroundSquare = ??????????????? new GeometryDrawing( ??????????????????? Brushes.White, ??????????????????? null, ??????????????????? new RectangleGeometry(new Rect(0, 0, 100, 100))); ? ? ??????????? GeometryGroup aGeometryGroup = new GeometryGroup(); ?????????? ?aGeometryGroup.Children.Add(new RectangleGeometry(new Rect(0, 0, 50, 50))); ??????????? aGeometryGroup.Children.Add(new RectangleGeometry(new Rect(50, 50, 50, 50))); ? ? ??????????? LinearGradientBrush checkerBrush = new LinearGradientBrush(); ??????????? checkerBrush.GradientStops.Add(new GradientStop(Colors.Red, 0.0)); ??????????? checkerBrush.GradientStops.Add(new GradientStop(Colors.Green, 1.0)); ? ? ??????????? GeometryDrawing checkers = new GeometryDrawing(checkerBrush, null, aGeometryGroup); ? ? ??????????? DrawingGroup checkersDrawingGroup = new DrawingGroup(); ??????????? checkersDrawingGroup.Children.Add(backgroundSquare); ??????????? checkersDrawingGroup.Children.Add(checkers); ? ? ??????????? myBrush.Drawing = checkersDrawingGroup; ??????????? myBrush.Viewport = new Rect(0, 0, 0.25, 0.25); ??????????? myBrush.TileMode = TileMode.Tile; ? ? ??????????? exampleRectangle.Fill = myBrush; ??????????? canvas5.Children.Insert(0, exampleRectangle); ??????? } Result:
Figure 6.
? This code shows how to draw and fill a rectangle with a brush and opacity (transparency). The Opacity property defines the transparency of a control in XAML and WPF.
<!--static rectangle with brush --> ??????? <Canvas Grid.Column="2" Grid.Row="2" HorizontalAlignment="Left" Margin="50,20,0,0"> ??????????? <Rectangle Width="150" Height="150"> ??????????????? <Rectangle.Fill> ??????????????????? <SolidColorBrush Color="Green" Opacity="0.25" /> ??????????????? </Rectangle.Fill> ???? ???????</Rectangle> ??????? </Canvas> ??????? <TextBlock Grid.Column="2" Grid.Row="2" HorizontalAlignment="Center">Static Rectangle rectangle with brush</TextBlock> Dynamic: ? <!--dynamic rectangle using brush--> ??????? <Canvas x:Name="canvas6" Grid.Column="3" Grid.Row="2" Margin="50,20,0,0"></Canvas> ??????? <TextBlock Grid.Column="3" Grid.Row="2" HorizontalAlignment="Center">Dynamic Rectangle paint with drawing</TextBlock> private void RectangleWithBrush() ??????? { ??????????? Rectangle myRectangle = new Rectangle(); ??????????? myRectangle.Width = 150; ??????????? myRectangle.Height = 150; ??????????? SolidColorBrush partiallyTransparentSolidColorBrush ??????????????? = new SolidColorBrush(Colors.Green); ??????????? partiallyTransparentSolidColorBrush.Opacity = 0.25; ??????????? myRectangle.Fill = partiallyTransparentSolidColorBrush; ??????????? canvas6.Children.Insert(0, myRectangle); ? ? ??????? } Result:
Figure 7.
? This demonstrate how to rotate a rectangle using transformation.?The RenderTransform property of?Rectangle is responsible for transforming a rectangle such as rotating. ? <!--static rotate rectangle --> ??????? <Canvas Grid.Column="2" Grid.Row="3" HorizontalAlignment="Left" Margin="50,20,0,0"> ??????????? <Rectangle Width="150" Height="150" Stroke="#FFBF4343" Canvas.Left="10" Canvas.Top="10" StrokeThickness="4" RenderTransformOrigin="0.5,0.5"> ??????????????? <Rectangle.RenderTransform> ??????????????????? <TransformGroup> ????????????????? ??????<ScaleTransform ScaleX="1" ScaleY="1"/> ??????????????????????? <SkewTransform AngleX="0" AngleY="0"/> ??????????????????????? <RotateTransform Angle="30.704"/> ??????????????????????? <TranslateTransform X="0" Y="0"/> ??????????????????? </TransformGroup> ??????????????? </Rectangle.RenderTransform> ??????????????? <Rectangle.Fill> ??????????????????? <LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0"> ??????????????????????? <GradientStop Color="#FF000000" Offset="0"/> ??????????????????????? <GradientStop Color="#FF1E1919" Offset="1"/> ??????????????????? </LinearGradientBrush> ??????????????? </Rectangle.Fill> ??????????? </Rectangle> ??????? </Canvas> ??????? <TextBlock Grid.Column="2" Grid.Row="3" HorizontalAlignment="Center">Static Rotate Rectangle</TextBlock> Result:
Figure 8. For more information see attached project. This is it. |