Brush

默认情况下,如果绘制ImageBrush区域的纵横比与图像不同,则拉伸其图像以完全填充要绘制的区域,从而扭曲图像。 可以通过Stretch将属性的Fill默认值更改为NoneUniform更改此行为。

 <Canvas
      Height="200" Width="300">
      <Canvas.Background>
        <ImageBrush ImageSource="sampleImages\Waterlilies.jpg" />
      </Canvas.Background>
    </Canvas>

 

DrawingBrush使您能够使用形状、文本、图像和视频绘制区域。 下面是不同类型图形对象的列表。

<Button Content="A Button">
  <Button.Background>
    <DrawingBrush>
      <DrawingBrush.Drawing>
        <GeometryDrawing Brush="LightBlue">
          <GeometryDrawing.Geometry>
            <GeometryGroup>
              <EllipseGeometry RadiusX="12.5" RadiusY="25" Center="25,50" />
              <EllipseGeometry RadiusX="12.5" RadiusY="25" Center="50,50" />
              <EllipseGeometry RadiusX="12.5" RadiusY="25" Center="75,50" />
            </GeometryGroup>
          </GeometryDrawing.Geometry>
          <GeometryDrawing.Pen>
            <Pen Thickness="1" Brush="Gray" />
          </GeometryDrawing.Pen>
        </GeometryDrawing>
      </DrawingBrush.Drawing>
    </DrawingBrush>
  </Button.Background>
</Button>

TileBrush可对图像、绘图或视觉对象绘制区域的方式进行大量控制。 例如,不使用单个拉伸图像绘制区域,而是使用创建图案的一系列平铺图像绘制区域。

Viewport确定基本磁贴的大小和位置,ViewportUnits该属性确定是使用绝对坐标还是相对坐标

在下面的示例中,使用一幅图像来创建一个宽度和高度均为 50% 的图块。 基本图块位于输出区域的 (0,0) 处。

<Rectangle
 Width="50" Height="100">
  <Rectangle.Fill>
    <!-- Paints an area with 4 tiles. -->
    <ImageBrush ImageSource="sampleImages\cherries_larger.jpg"
      Viewport="0,0,0.5,0.5"
      ViewportUnits="RelativeToBoundingBox" 
      TileMode="Tile" />
  </Rectangle.Fill>
</Rectangle>

下一个示例将 ImageBrush的切片设置为 25 x 25 个独立于设备的像素。

<Rectangle
 Width="50" Height="100">
  <Rectangle.Fill>
    <!-- Paints an area with 25 x 25 tiles. -->
    <ImageBrush ImageSource="sampleImages\cherries_larger.jpg"
      Viewport="0,0,25,25"
      ViewportUnits="Absolute" 
      TileMode="Tile" />
  </Rectangle.Fill>
</Rectangle>
原文地址:https://www.cnblogs.com/yetsen/p/13573633.html