How to: Paint an Area with a Visual

 

This example shows how to use the VisualBrush class to paint an area with a Visual.

In the following example, several controls and a panel are used as the background of a rectangle.

    <Rectangle Width="150" Height="150" Stroke="Black" Margin="5,0,5,0">
      <Rectangle.Fill>
        <VisualBrush>
          <VisualBrush.Visual>
            <StackPanel Background="White">
              <Rectangle Width="25" Height="25" Fill="Red" Margin="2" />
              <TextBlock FontSize="10pt" Margin="2">Hello, World!</TextBlock>
              <Button Margin="2">A Button</Button>
            </StackPanel>
          </VisualBrush.Visual>
        </VisualBrush>
      </Rectangle.Fill>
    </Rectangle>

            VisualBrush myVisualBrush = new VisualBrush();
            
            // Create the visual brush's contents.
            StackPanel myStackPanel = new StackPanel();
            myStackPanel.Background = Brushes.White;
            
            Rectangle redRectangle = new Rectangle();
            redRectangle.Width = 25;
            redRectangle.Height =25; 
            redRectangle.Fill = Brushes.Red;
            redRectangle.Margin = new Thickness(2);
            myStackPanel.Children.Add(redRectangle);
            
            TextBlock someText = new TextBlock();
            FontSizeConverter myFontSizeConverter = new FontSizeConverter();
            someText.FontSize = (double)myFontSizeConverter.ConvertFrom("10pt");
            someText.Text = "Hello, World!";
            someText.Margin = new Thickness(2);
            myStackPanel.Children.Add(someText);
            
            Button aButton = new Button();
            aButton.Content = "A Button";
            aButton.Margin = new Thickness(2);
            myStackPanel.Children.Add(aButton);
            
            // Use myStackPanel as myVisualBrush's content.
            myVisualBrush.Visual = myStackPanel;

            // Create a rectangle to paint.
            Rectangle myRectangle = new Rectangle();
            myRectangle.Width = 150;
            myRectangle.Height = 150;
            myRectangle.Stroke = Brushes.Black;
            myRectangle.Margin = new Thickness(5,0,5,0);
            
            // Use myVisualBrush to paint myRectangle.
            myRectangle.Fill = myVisualBrush;

For more information about VisualBrush and additional examples, see the Painting with Images, Drawings, and Visuals overview.

This code example is part of a larger example provided for the VisualBrush class. For the complete sample, see the VisualBrush Sample.

Painting with Images, Drawings, and Visuals

Show: