2014-01-15 28 views
0

我需要在WPF應用程序上顯示數據,該應用程序的顏色與項目屬性值的度量成比例,如下圖所示。 /(綠 - 黑 - 紅)基於Colorpleth值轉換器

enter image description here

我的問題是如何提供的顏色一個LinearGradientBrush上的相對價值?如圖像中最低值應該返回紅色(盤),中間值黑色/灰色(ish)和最高值貪婪(ish)。

我開始使用可以返回一些單獨顏色的轉換器將每個面板的背景顏色綁定到該項目的值,但是我想根據相對值返回所有可能的LinearGradientBrushes。

Public Class ValueToColorConverter 
    Inherits MarkupExtension 
    Implements IValueConverter 

    Public Function Convert(ByVal value As Object, ByVal targetType As System.Type, ByVal parameter As Object, ByVal culture As System.Globalization.CultureInfo) As Object Implements IValueConverter.Convert 
     Dim v As Double = System.Convert.ToDecimal(value) 
     If v < 0 Then 
      Return Brushes.Red 
     ElseIf v < 0.05 Then 
      Return Brushes.Gray 
     Else 
      Return Brushes.Green 
     End If 
    End Function 

    Public Function ConvertBack(ByVal value As Object, ByVal targetType As System.Type, ByVal parameter As Object, ByVal culture As System.Globalization.CultureInfo) As Object Implements IValueConverter.ConvertBack 
     Throw New System.NotImplementedException() 
    End Function 

    Public Overrides Function ProvideValue(ByVal serviceProvider As System.IServiceProvider) As Object 
     Return Me 
    End Function 

End Class 
+0

我想LinearGradientBrush不是你在這裏需要的。聽起來就像你只是想從一個特定的顏色值創建一個'SolidColorBrush'。查看['Color.FromArgb'](http://msdn.microsoft.com/zh-cn/library/system.windows.media.color.fromargb.aspx)方法。 – Clemens

+0

目前的解決方案有什麼問題?這似乎是我會這樣做的方式。 – Sheridan

+0

目前的解決方案的問題是,它只能返回3種獨特的顏色(紅色,灰色或綠色),但我想從更大範圍(無限數量)的可能顏色中返回一種顏色。我想從給定的值計算特定的顏色(SolidColor或LinearGradient,任何事情,任何事情)。 – Nuts

回答

0

看一看this類似問題的答案。似乎做你想做的事。