Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/311.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 带有多段线和LinearGradientBrush的图表出现问题_C#_.net_Wpf - Fatal编程技术网

C# 带有多段线和LinearGradientBrush的图表出现问题

C# 带有多段线和LinearGradientBrush的图表出现问题,c#,.net,wpf,C#,.net,Wpf,我有一个包含在画布中的多段线的图形。我想设置多段线的笔划,从底部的一种颜色开始,到顶部的另一种颜色结束。我尝试使用这个xaml: <Polyline StrokeThickness="2"> <Polyline.Stroke> <LinearGradientBrush StartPoint="0.5,1" EndPoint="0.5,0"> <GradientStop Color="Blue" Offset="0" />

我有一个包含在画布中的多段线的图形。我想设置多段线的笔划,从底部的一种颜色开始,到顶部的另一种颜色结束。我尝试使用这个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>

通过这种方式,它可以工作,但渐变的高度等于多段线的高度。我的意思是,如果我有一条从画布底部到顶部的多段线,梯度应用于画布的整个高度。如果改为使用水平多段线,则渐变将应用于其厚度。
我希望渐变高度与画布高度相等,独立于多段线高度。

如何实现这一点?

渐变的开始和停止由
LinearGradientBrush
StartPoint
EndPoint
属性给出。您的示例显示了
多段线内的值(0.5,1和0.5,0)。可以使用小于0或大于1的值,以便在形状之前开始渐变,或在形状之后结束渐变

但是使用相对值可能很难满足您的需求。使用相对值是因为未明确设置
LinearGradientBrush
MappingMode
属性。默认值为
相对边界框
,但可以设置为
绝对值

这样,您可以将
起始点设置为(0,0),将
端点设置为画布的宽度和高度,以获得所需的结果