WPF:Graphics图画-Brushes画刷-Brushes画刷集合(3)

SolidcolorBrushSyntax纯色画刷语法

clipboard.png

1、颜色表示方法:

  1. <SolidColorBrush Color="Blue" />
  2. <SolidColorBrush Color="#00F" />
  3. <SolidColorBrush Color="#0000FF" />
  4. <SolidColorBrush Color="#FF0000FF" />
  5. <Color ScA="1.0" ScR="0.0" ScG="0.0" ScB="1.0" />
  6. <Color A="255" R="0" G="0" B="255" />

AnimatingSolidColorBrushExample纯色画刷动画效果

clipboard.png

PredefinedBrushes预定义画刷

clipboard.png

clipboard.png

BrushOpacityExample画刷不透明度

clipboard.png

DrawingBrush的几何绘图数据为:

<DrawingGroup x:Key="MyDrawing" presentationOptions:Freeze="True">
  <DrawingGroup.Children>
    <GeometryDrawing>
      <GeometryDrawing.Geometry>
        <GeometryGroup>
          <LineGeometry StartPoint="0,0" EndPoint="1,1" />
          <LineGeometry StartPoint="0,1" EndPoint="1,0" />
        </GeometryGroup>
      </GeometryDrawing.Geometry>
      <GeometryDrawing.Pen>
        <Pen Thickness="0.2" Brush="#3366FF" />
      </GeometryDrawing.Pen>
    </GeometryDrawing>
    <GeometryDrawing Brush="Red"
     Geometry="M 0.4,0.4 L 0.5,0.2 0.6,0.4 0.5,0.5" />
    <GeometryDrawing Brush="Blue"
     Geometry="M 0.4,0.6 L 0.5,0.8 0.6,0.6 0.5,0.5" />
    <GeometryDrawing Brush="Black"
     Geometry="M 0.4,0.4 L 0.2,0.5 0.4,0.6 0.5,0.5" />
    <GeometryDrawing Brush="Green"
     Geometry="M 0.6,0.4 L 0.8,0.5 0.6,0.6 0.5,0.5" />
  </DrawingGroup.Children>
</DrawingGroup>

BrushTransformExample画刷变换

关注点:Brush变化概述
Brush 类提供了两个变换属性: Transform 和 RelativeTransform。 使用这些属性可以旋转、缩放、扭曲和平移画笔的内容。

  1. 向画笔的 RelativeTransform 属性应用变换时,变换会在其输出映射到绘制区域之前应用于画笔。
  2. 由于是在画笔的输出映射到 1 x 1 矩形的情况下应用 RelativeTransform,因此变换中心和偏移量值是相对的。 例如,如果使用一个 RotateTransform 将画笔输出绕其中心旋转 45 度,您将为 RotateTransform 指定 CenterX 0.5, CenterY 0.5。

clipboard.png

<!-- Applies a RotateTransform to the brush's RelativeTransform property. The
     RotateTransform's center is set to 0.5,0.5, which is the
     center of the brush's content (in this case, a Drawing). -->
<Rectangle Width="175" Height="90" Stroke="Black" Grid.Row="14" Grid.Column="4">
  <Rectangle.Fill>
    <DrawingBrush Drawing="{StaticResource MyDrawing}" Viewport="0,0,0.5,0.5" TileMode="Tile">
      <DrawingBrush.RelativeTransform>
        <RotateTransform CenterX="0.5" CenterY="0.5" Angle="45" />
      </DrawingBrush.RelativeTransform>
    </DrawingBrush>
  </Rectangle.Fill>
</Rectangle>

扩展:

  1. 向画笔的 RelativeTransform 属性应用变换时,变换会在其输出映射到绘制区域之前应用于画笔。 下面的列表描述了处理和变换画笔内容的顺序。

    1. 处理画笔的内容。 对于 GradientBrush,这意味着确定渐变区域。 对于 TileBrush, Viewbox 映射到 Viewport。 这将成为画笔的输出。
    2. 将画笔输出投影到 1 x 1 变换矩形上。
    3. 应用画笔的 RelativeTransform(如果有)。
    4. 将变换后的输出投影到要绘制的区域。
    5. 应用画笔的 Transform(如果有)。
  1. 与 TileBrush 一起使用 RelativeTransform:

    1. 由于图块画笔比其他画笔更复杂,因此向这种画笔应用 RelativeTransform 可能会产生意外结果。 以下面的图像为例。
    2. 下面的示例使用一个 ImageBrush 来绘制一个包含前面的图像的矩形区域。 它将 RotateTransform 应用于 ImageBrush 对象的 RelativeTransform 属性,并将其 Stretch 属性设置为 UniformToFill,以便在拉伸图像以完全填充矩形时保留图像的纵横比。
    3. 请注意,即使画笔的 Stretch 设置为 UniformToFill,图像也会扭曲。 这是因为在将画笔的 Viewbox 映射到其 Viewport 之后应用了相对变换。 下面的列表描述该过程的各个步骤:

clipboard.png

clipboard.png

clipboard.png

clipboard.png

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值