Wpf 如何根据点值动态地将折线图线条颜色更改为渐变?

Wpf 如何根据点值动态地将折线图线条颜色更改为渐变?,wpf,wpftoolkit,Wpf,Wpftoolkit,我正在WPF(C#)中构建一个应用程序,以接受数值列表并以折线图的形式显示它们。为此,我正在使用Codeplex的WPF工具包 我想让折线图改变颜色,从蓝色变为红色,值从125变为145。我使用了一个覆盖的LineDataPoint样式和一个ValuetoColorConverter来更改数据点的颜色,但我不知道如何为点之间的线设置渐变 此外,图例图标颜色显示为空白 XAML: <chartingToolkit:LineSeries Title="S

我正在WPF(C#)中构建一个应用程序,以接受数值列表并以折线图的形式显示它们。为此,我正在使用Codeplex的WPF工具包

我想让折线图改变颜色,从蓝色变为红色,值从125变为145。我使用了一个覆盖的LineDataPoint样式和一个ValuetoColorConverter来更改数据点的颜色,但我不知道如何为点之间的线设置渐变

此外,图例图标颜色显示为空白

XAML:

<chartingToolkit:LineSeries                 
   Title="Systolic Pressure"
   ItemsSource="{Binding}"
   IndependentValuePath="recdatetime"
   DependentValuePath="systolic">

   <chartingToolkit:LineSeries.DataPointStyle>
       <Style TargetType="chartingToolkit:LineDataPoint" BasedOn="{StaticResource fullTooltips}">
           <Setter Property="Background">
               <Setter.Value>
                   <Binding Path="systolic" Converter="{StaticResource BPToColorConverter}">
                       <Binding.ConverterParameter>
                           <sys:Int32>1</sys:Int32>
                       </Binding.ConverterParameter>
                   </Binding>
               </Setter.Value>
           </Setter>           
       </Style>
   </chartingToolkit:LineSeries.DataPointStyle>

   <chartingToolkit:LineSeries.DependentRangeAxis>
       <chartingToolkit:LinearAxis
         x:Name="systolic_chart_yaxis"
         Orientation="Y"
         Title="BP (mmHg)"
         Minimum="50"
         Interval="5"
         ShowGridLines="True"/>
   </chartingToolkit:LineSeries.DependentRangeAxis>
   <chartingToolkit:LineSeries.IndependentAxis>
       <chartingToolkit:DateTimeAxis
          Orientation="X"
          Name="mainchart_timeaxis" 
          Interval="1"
          IntervalType="Days"
          ShowGridLines="False">
        </chartingToolkit:DateTimeAxis>
   </chartingToolkit:LineSeries.IndependentAxis>
</chartingToolkit:LineSeries>

1.
有两个这样的系列。上面的代码在顶部提供日X轴,而另一个代码在底部提供小时X轴

颜色转换器

 public class BPToColorConverter : IValueConverter
{
    public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
    {
        int input = (int)value;
        int r, g, b;
        SolidColorBrush valuecolor;
        if((int)parameter==1) //systolic
        { 
            if(input>=125)
            {
                if(input>145) input=145;
                r = (int)(((float)(input-125)/20) * 255);
                g = 0;
                b = 255 - r;
            }
            else if(input<110)
            {
                if(input<90) input=90;
                r = 0;
                g = 0;
                b = (int)(((float)(110 - input) / 25) * 255);
                b = 255 - b;
            }
            else
            {
                r=0;
                g=0;
                b=255;
            }

        }
        else //diastolic
        {
            if (input > 85)
            {
                if (input > 100) input = 100;
                r = (int)(((float)(input - 85) / 15) * 77);
                r += 102;
                g = (int)(((float)(input - 85) / 15) * 128);
                g = 255 - g;
                b = 0;
            }
            else if (input < 75)
            {
                if (input < 65) input = 65;
                r = ((int)((float)(input - 65) / 10) * 25);
                r += 76;
                g = ((int)((float)(input - 65) / 10) * 100);
                g += 153;
                b = ((int)((float)(input - 65) / 10) * 25);
            }
            else
            {
                r = 0;
                g = 255;
                b = 0;
            }
        }
        r %= 256;
        g %= 256;
        b %= 256;
        valuecolor = new SolidColorBrush(System.Windows.Media.Color.FromRgb((byte)r,(byte)g,(byte)b));
        return valuecolor;
    }
}
公共类BPToColorConverter:IValueConverter
{
公共对象转换(对象值、类型targetType、对象参数、System.Globalization.CultureInfo区域性)
{
int输入=(int)值;
int r,g,b;
SolidColorBrushValueColor;
如果((int)参数==1)//
{ 
如果(输入>=125)
{
如果(输入>145)输入=145;
r=(int)((浮点)(输入-125)/20)*255);
g=0;
b=255-r;
}
否则,如果(输入100)输入=100;
r=(int)((浮点)(输入-85)/15)*77);
r+=102;
g=(int)((浮点)(输入-85)/15)*128);
g=255-g;
b=0;
}
否则如果(输入<75)
{
如果(输入<65)输入=65;
r=((int)((float)(输入-65)/10)*25);
r+=76;
g=((int)((float)(输入-65)/10)*100);
g+=153;
b=((int)((float)(输入-65)/10)*25);
}
其他的
{
r=0;
g=255;
b=0;
}
}
r%=256;
g%=256;
b%=256;
valuecolor=新的SolidColorBrush(System.Windows.Media.Color.FromRgb((字节)r,(字节)g,(字节)b));
返回值颜色;
}
}
这些值从SQLite数据库中检索,并添加到自定义类的集合中。然后将集合设置为图表的DataContext

到目前为止,我得到的是:

请告诉我如何将线条颜色设置为线条连接的两种数据点颜色之间的渐变。另外,请帮助我将每个系列的图例颜色固定为恒定颜色