对于LinearGradientBrush,有没有人知道SVF中是否存在SVG的“gradientUnits = userSpaceOnUse”的等值属性?我似乎无法找到这个。
如果没有,是否有人知道如何计算(C#或VB.NET)?例如,如果我在一个100x100的矩形上有一个StartPoint为0,0且EndPoint为1,1,则角度为45度。但是,当我更改Rectangle的宽度或高度时,例如Width = 150,轴不再是45度。我怎么能计算出在一个不是正方形的矩形中将角度保持在45度,以便它从左下角到右上角为中间的梯度停止。
答案 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