2

我有一系列点,我将在图表上变成一条线。我想要的是给图形下方的区域一个渐变填充。它看起来有点像这样的彭博图表;

示例图

我的问题实际上分为三个部分;

  • 首先,我应该如何只填充图表下方的区域?
  • 其次,如何用渐变填充它?
  • 最后,如果我在同一张图上有多条线,多条线下的任何区域都应该有灰度渐变填充,你会如何设置呢?

我最大的问题是决定要使用的数据结构,我可以使用许多多面形状(每条线/数据系列一个),然后告诉画笔绘制;

  • 如果不是任何形状,则为透明
  • 一个系列的颜色,如果它是一种形状(相对于高度的 Alpha 来给出 grad)
  • 如果它有多种形状,则为黑色(相对于高度的 Alpha 以给出 grad)

然后我会用白色画出形状的边界。

谢谢,

加夫

4

1 回答 1

6

使用免费版本的Visiblox Silverlight Charts可以实现渐变效果。请参阅示例应用程序“后见之明”,了解如何将 Visiblox 图表应用于此上下文的应用程序。

我附上了关于如何实现这种效果的 XAML 的粗略代码片段:

<UserControl x:Class="SilverlightApplication1.MainPage"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:v="clr-namespace:Visiblox.Charts;assembly=Visiblox.Charts">

<UserControl.Resources>
    <LinearGradientBrush x:Key="GradientBrush" StartPoint="1.0, 0.0" EndPoint="1.0, 1.0">
        <GradientStop Color="AliceBlue" Offset="0.3" />
        <GradientStop Color="DarkBlue" Offset="0.7" />
    </LinearGradientBrush>
</UserControl.Resources>

<Grid x:Name="LayoutRoot" Background="White">
    <v:Chart x:Name="Chart">
        <v:Chart.Series>
            <v:LineSeries x:Name="Series" ShowArea="True" AreaFill="{StaticResource GradientBrush}"/>
        </v:Chart.Series>
    </v:Chart>
</Grid>

就个人而言,我会采取事后诸葛亮的行动,当情节区域上有多个系列时,删除线下的区域。我认为在这一点上梯度会妨碍数据,正如你上面提到的,对此做一些事情会产生计算成本。这也可能导致对数据的误解,所以要小心。

在将数据导入图表方面,您可以使用 Visiblox BindableDataSeries 将业务对象直接绑定到图表上。:)

披露:我之前曾担任 Visiblox Charts 的开发人员。

希望这可以帮助!

于 2011-01-07T13:42:08.173 回答