3

LinearGradientBrush の WPF に SVG の「gradientUnits=userSpaceOnUse」の同等の属性があるかどうかは誰にもわかりませんか? 私はこれを見つけることができないようです。

そうでない場合、(C# または VB.NET) で計算する方法を知っている人はいますか? たとえば、100x100 の Rectangle で StartPoint が 0,0 で EndPoint が 1,1 の場合、角度は 45 度です。ただし、Rectangle の幅または高さを変更すると (たとえば、幅 = 150)、軸が 45 度ではなくなります。正方形ではない長方形で角度を 45 度に保つように計算して、中央のグラデーションストップの左下から右上隅まで走るようにするにはどうすればよいでしょうか。

4

2 に答える 2

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>
于 2010-02-20T03:13:48.163 に答える
2

ブラシ MappingMode = BrushMappingMode.Absolute を設定します。

于 2009-09-01T11:10:51.657 に答える