SVG -> WPF линейный градиент - PullRequest
       13

SVG -> WPF линейный градиент

3 голосов
/ 30 августа 2009

Кто-нибудь знает, есть ли в WPF эквивалентный атрибут SVG "GrainUnits = userSpaceOnUse" для LinearGradientBrush? Я не могу найти это.

Если нет, кто-нибудь знает, как рассчитать его в (C # или VB.NET)? Например, если у меня есть начальная точка 0,0 и конечная точка 1,1 на прямоугольнике 100x100, угол составляет 45 градусов. Однако, когда я изменяю ширину или высоту прямоугольника, например Width = 150, ось больше не находится под углом 45 градусов. Как рассчитать, чтобы угол в 45 градусов был прямоугольником, который не является квадратом, чтобы он проходил от нижнего левого до верхнего правого угла для среднего градиента.

Ответы [ 2 ]

3 голосов
/ 20 февраля 2010

Теперь это работает как шарм в новом Silverlight 4 - установка угла в 45 градусов в RotateTransform делает это для ограничивающего прямоугольника вместо фигуры. Как это:

  <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 голосов
/ 01 сентября 2009

Установить кисть MappingMode = BrushMappingMode.Absolute

...