偏移如何工作

时间:2013-12-08 21:05:53

标签: c# .net wpf xaml

我想知道,如何在GradientStop中的WPF中使用偏移量

 <Grid.Background>
        <LinearGradientBrush>
            <GradientStopCollection>
                <GradientStop Color="Black" Offset="0" />
                <GradientStop Color="Red" Offset="1" />
            </GradientStopCollection>
        </LinearGradientBrush>
 </Grid.Background>

2 个答案:

答案 0 :(得分:1)

我很确定这是渐变完全切换到下一个颜色的点。如下所示:

<Rectangle Width="200" Height="100">
  <Rectangle.Fill>
    <LinearGradientBrush StartPoint="0,0" EndPoint="1,1">
      <GradientStop Color="Yellow" Offset="0.0" />
      <GradientStop Color="Red" Offset="0.25" />
      <GradientStop Color="Blue" Offset="0.75" />
      <GradientStop Color="LimeGreen" Offset="1.0" />
    </LinearGradientBrush>
  </Rectangle.Fill>
</Rectangle>

从0到25%的矩形将从黄色流向红色。矩形的25%到75%将从红色流向蓝色。从75%到100%,矩形将​​呈蓝色至浅绿色。

因此,在您的示例中,颜色将从黑色变为红色,颜色在开始时仅为完全黑色,在结束时为完全红色。

答案 1 :(得分:0)

StartPoint的默认值为0,0,EndPoint的默认值为1,1。由于尚未指定StartPoint和EndPoint,因此隐式使用这些值。见http://msdn.microsoft.com/en-us/library/system.windows.media.lineargradientbrush(v=vs.110).aspx

最后,重要的是要注意画笔有一个BrushMappingMode属性,默认为RelativeToBoundingBox。由于您未指定,因此使用RelativeToBoundingBox并且offset确定端点之间颜色的位置。另一个选项是Absolute,它是EndPoint-StartPoint开始重要的地方。

使用BrushMappingMode RelativeToBoundingBox在偏移0.3处指定渐变停止时,您将在StartPoint和EndPoint之间指定30%线性渐变的颜色。