2010-11-22 12 views
1

Iは、カラーマッピング(多かれ少なかれ)に値を、次の水平スケールを有する: 100%赤 80%オレンジ 60%黄色 40%のライトグリーン 20%グリーン今はたい 10%濃い緑色(棒グラフに似た)異なる尺度でその尺度に長方形を置き、その絶対尺度とその高さに基づいて勾配で塗りつぶしたいので、その矩形がその尺度で0%〜40%であれば塗りつぶされます暗い緑色から薄い緑色までの勾配で。wpfで絶対勾配の長方形(高さが異なる)を塗りつぶす方法は?

これを達成するには?

これはすべて明確です。予め

おかげで両方の特性に

答えて

2

使用MultiBindingの:multiBindingConverterスケール上の矩形の位置、その高さ、。

例:

<Window.Resources> 
    <c:NameConverter x:Key="myNameConverter"/> 
    ... 
</Window.Resources> 


... 

<Rectangle Name="myRectangle" DataContext="myDataContext"> 
    <Rectangle.Fill> 
    <MultiBinding Converter="{StaticResource myGradientConverter}"> 
     <Binding Path="PositionOnScale"/> 
     <Binding Path="Height"/> 
    </MultiBinding> 
    </Rectangle.Fill> 
</Rectangle > 

その後:

public class myGradientConverter : IMultiValueConverter 
{ 
    public object Convert(object[] values, Type targetType, object parameter, CultureInfo culture) 
    { 
     ... // do stuff here to return the corresponding Gradient 
    } 

    public object[] ConvertBack(object value, Type[] targetTypes, object parameter, CultureInfo culture) 
    { 
     ... // do stuff here (optional) 
    } 
} 
0

私は部分を「隠す」ためにバーの上に別の白い四角形を入れ、その後、フルサイズで、あなたのチャート上の各バーを置きますそれは見えません。

たとえば、横棒が左から右に40%と表示されている場合は、100%になるフルサイズの矩形を作成し、その上に60%幅の白い矩形を配置します右にドッキングされ、バーの右の60%を隠すでしょう

関連する問題