0

我有一个带有以下 XAML 的矩形:

<Rectangle x:Name="ActiveIndex" Width="100" Height="15" Margin="50,165,50,20">
    <Rectangle.Fill>
        <LinearGradientBrush>
            <GradientStop Color="#6FFDFD" Offset="0.0" />
            <GradientStop Color="#0D00F9" Offset="1.0" />                    
        </LinearGradientBrush>
    </Rectangle.Fill>
</Rectangle>

我需要一个代码解决方案,当给定从 1 到 100 的输入偏移量时,可以从 ActiveIndex 中找到颜色。

目前,我正在使用另一个带有 Viewbox 的绑定 Rectangle 通过设置 Viewbox 左值以适应偏移量来显示颜色。这种方法不会让获取颜色,因为画笔是视觉画笔。

<Rectangle x:Name="ActiveIndexColor" Width="100" Height="15" Margin="0,180,0,0" Visibility="Visible">
    <Rectangle.Fill>
        <VisualBrush Visual="{Binding ElementName=ActiveIndex}" 
            ViewboxUnits="RelativeToBoundingBox" 
            Viewbox="0.0000001,0.0000001,0.0000001,0.0000001">
        </VisualBrush>                
    </Rectangle.Fill>            
</Rectangle>
4

2 回答 2

0

就像是...

RedColorYouWant = Offset * 0D + (1 - Offset) * 6F
GreenColorYouWant = Offset * 00 + (1 - Offset) * FD
BlueColorYouWant = Offset * F9 + (1 - Offset) * FD

也许 ?

偏移量是介于 0 和 1 之间的值。

于 2013-09-13T13:25:37.047 回答
0

谢谢弗兰苏的好主意!

为了适应我的偏移量,我编写了如下代码:

int red = ((offset * 13) + ((100 - offset) * 111)) / 100;
int green = ((offset * 0) + ((100 - offset) * 253)) / 100;
int blue = ((offset * 249) + ((100 - offset) * 253)) / 100;
Color color = (Color)ColorConverter.ConvertFromString("#" + red.ToString("x2") +  green.ToString("x2") + blue.ToString("x2"));
于 2013-09-13T14:51:40.350 回答