2013-09-13 4 views
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.

В настоящее время я использую другой связанный прямоугольник с полем «Просмотр», чтобы показать цвет, установив значение слева влево для соответствия офсету. Этот подход не позволяет получить цвет, поскольку кисть - это визуальная кисть.

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

ответ

0

Что-то вроде ...

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

может быть?

Смещение быть значение между 0 и 1 ..

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"));