0

次の XAML を持つ Rectangle があります。

<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 から色を見つけることができるコード ソリューションが必要です。

現在、オフセットに合わせてビューボックスの左の値を設定することにより、ビューボックスで別のバインドされた長方形を使用して色を表示しています。ブラシはビジュアル ブラシであるため、このアプローチでは色を取得できません。

<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

美しいアイデアをありがとう franssu!

私のオフセットに合わせて、次のようにコードを書きました。

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 に答える