SVG - > WPF线性渐变

时间:2009-08-30 04:05:55

标签: wpf silverlight silverlight-4.0 svg lineargradientbrush

对于LinearGradientBrush,有没有人知道SVF中是否存在SVG的“gradientUnits = userSpaceOnUse”的等值属性?我似乎无法找到这个。

如果没有,是否有人知道如何计算(C#或VB.NET)?例如,如果我在一个100x100的矩形上有一个StartPoint为0,0且EndPoint为1,1,则角度为45度。但是,当我更改Rectangle的宽度或高度时,例如Width = 150,轴不再是45度。我怎么能计算出在一个不是正方形的矩形中将角度保持在45度,以便它从左下角到右上角为中间的梯度停止。

2 个答案:

答案 0 :(得分:3)

这就像新Silverlight 4中的魅力一样 - 在RotateTransform中将角度设置为45度,对于边界框而不是形状。像这样:

  <Rectangle Width="70" Height="50">
    <Rectangle.Fill>
        <LinearGradientBrush  EndPoint="0.5,1" StartPoint="0.5,0">
            <GradientStop Color="#FFF70202" Offset="0"/>
            <GradientStop Color="#FFF7F206" Offset="1"/>
            <GradientStop Color="Black" Offset="0.49"/>
            <GradientStop Color="Black" Offset="0.51"/>
            <GradientStop Color="White" Offset="0.5"/>
            <LinearGradientBrush.RelativeTransform>
            <RotateTransform CenterX="0.5" CenterY="0.5" Angle="45"></RotateTransform>
            </LinearGradientBrush.RelativeTransform>
        </LinearGradientBrush>
    </Rectangle.Fill>

答案 1 :(得分:2)

设置画笔MappingMode = BrushMappingMode.Absolute