2009-08-30 9 views
3

LinearGradientBrushのWPFでSVGの "gradientUnits = userSpaceOnUse"の等値属性が存在するかどうかは知りませんか?私はこれを見つけるように見えない。SVG - > WPF線形勾配

(C#またはVB.NET)で計算する方法を知っている人はいませんか?たとえば、100x100のRectangleにStartPointが0,0、EndPointが1,1の場合、角度は45度です。しかし、Rectangleの幅または高さを変更すると、たとえばWidth = 150のように、軸はもはや45度になりません。正方形ではない矩形内で角度を45度に保つように計算するには、中段のグラデーション停止の場合は左下から右上隅までを実行します。 RotateTransformで45度まで角度を設定すると、代わりに形状のバウンディングボックスのためにそうする -

+0

あなたは、幅や高さの変更を言うとき、長方形を変換していますか?はいの場合は、TransformまたはRelativeTransformを使用していますか? –

+0

申し訳ありませんが、私ははっきりとは思わなかった。私は事実の後でWやHを変更していません - 異なるサイズの長方形、例えば120x220の場合、希望の結果(45度の角度)の例として100x100の正方形を使用していました。所望の結果は、3つの線勾配がある場合、中央の勾配が、矩形の左下から右上へ、その軸上で直接実行されることである。ありがとうございます。 –

答えて

3

を設定します。このように:

<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> 
2

これは新しいSilverlightの4になりました魔法のように動作ブラシMappingMode = BrushMappingMode.Absolute

+0

私はAbsoluteを見てきましたが、Start/End Pointの位置を計算する方法を理解できませんでした。 –

関連する問題