Проблема с диаграммой с полилинией и LinearGradientBrush - PullRequest
4 голосов
/ 10 апреля 2010

У меня есть график с полилинией, заключенной в холст. Я хотел бы установить обводку полилинии, начиная с цвета внизу и заканчивая другим цветом сверху. Я пробовал с этим xaml:

<Polyline StrokeThickness="2">
  <Polyline.Stroke>
    <LinearGradientBrush StartPoint="0.5,1" EndPoint="0.5,0">
      <GradientStop Color="Blue"  Offset="0" />
      <GradientStop Color="Cyan" Offset="1" />
    </LinearGradientBrush>
  </Polyline.Stroke>
</Polyline>

Таким образом, это работает, но высота градиента равна высоте полилинии. Я имею в виду, если у меня есть ломаная линия, которая идет от нижней части холста к его вершине, градиент применяется по всей высоте холста. Если вместо этого у меня есть горизонтальная полилиния, градиент применяется к ее толщине.
Я хотел бы иметь высоту градиента, равную высоте холста, независимо от высоты полилинии.
Как мне этого добиться?

1 Ответ

3 голосов
/ 11 апреля 2010

Начало и остановка градиента задаются свойствами StartPoint и EndPoint LinearGradientBrush. В вашем примере показаны значения, которые находятся внутри PolyLine (0,5,1 и 0,5,0). Вы можете иметь значения меньше 0 или больше 1, чтобы начать градиент до фигуры или закончить после нее.

Но использование относительных значений может быть трудным для того, что вы хотите. Относительные значения используются потому, что свойство MappingMode для LinearGradientBrush явно не установлено. Значение по умолчанию RelativeToBoundingBox, но может быть установлено Absolute.

Таким образом, вы можете установить StartPoint на (0,0) и EndPoint на ширину и высоту холста, чтобы получить результат, который вы ищете.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...