2010-04-10 100 views
4

我有一个包含在canvas中的折线图。我想设置多段线的笔划从底部的颜色开始,结束到另一个顶部的颜色。我试着用此XAML:
带折线和LinearGradientBrush的图表问题

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

以这种方式工作,但是渐变的高度等于折线的高度。我的意思是,如果我有一条从画布底部到顶部的多段线,则渐变将应用于画布的整个高度。如果我有一个水平多段线,渐变应用于其厚度。
我希望渐变高度等于画布高度,与多段线高度无关。
我该如何做到这一点?

回答

3

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

但是,使用相对值可能很难为你想要的。使用相对值是因为LinearGradientBrushMappingMode属性未明确设置。默认值是RelativeToBoundingBox,但可以设置为Absolute

这样,您可以将StartPoint设置为(0,0)和EndPoint设置为画布的宽度和高度,以获得您要查找的结果。