如何用wpf中的绝对渐变填充矩形(具有不同的高度)?

时间:2010-11-22 12:36:20

标签: wpf

我的水平刻度具有以下颜色映射值(或多或少): 100%红色 80%橙色 60%黄色 40%浅绿色 20%绿色 10%深绿色 现在我想在不同高度(类似于条形图)的比例上放置矩形,我想根据绝对比例和它们的高度用渐变填充它们,这样如果我的矩形从0%到40%那么它会被从深绿色到浅绿色等渐变填充。

如何实现这一目标?

希望这一切都清楚。

提前致谢

2 个答案:

答案 0 :(得分:2)

在两个属性上使用MultiBinding:矩形在刻度上的位置及其高度,使用multiBindingConverter。

e.g:

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

答案 1 :(得分:0)

我会将图表上的每个条形图设置为全尺寸,然后在条形图上方放置另一个白色矩形以“隐藏”不可见的部分。

例如,如果你有一个水平条从左到右,它应该显示40%,那么我会创建一个100%的全尺寸矩形,然后在它上面放置一个60%宽度的白色矩形它停靠在右边,这将隐藏正确的60%的栏