В Silverlight 4: как получить цвет из свойства Fill - PullRequest
1 голос
/ 19 ноября 2010

в моем XAML у меня есть:

<Canvas Grid.Row="1" Background="#FFF2F2F2" Width="78" HorizontalAlignment="Left">
            <Rectangle Height="67" x:Name="rectFront" Width="70" Fill="#FF000000" Stroke="#FFB9B9B9" StrokeThickness="3" StrokeLineJoin="Miter" StrokeStartLineCap="Flat" Stretch="Uniform" Canvas.Left="4"/>
</Canvas>

в коде CS:

someColor = rectFront.Fill; // <-- error here, can't convert Brush to Color

, что полностью имеет смысл.Но как я могу преобразовать атрибут цвета из кисти из заливки?

Спасибо

Простой код

Ответы [ 2 ]

4 голосов
/ 19 ноября 2010

Приведите его к SolidColorBrush;

var brush = rectFront.Fill as SolidColorBrush;
if(brush != null)
    someColor = brush.Color
2 голосов
/ 19 ноября 2010

вот в чем проблема .... есть несколько разных типов кистей.поэтому вам придется по-разному обращаться к свойству цвета в зависимости от типа получаемой кисти.

SolidColorBrush LinearGradientBrush RadialGradientBrush

если вам нужен цвет кисти, а это SolidColorBrush, вы можете привести его к цвету следующим образом:

if ( rectFront.Fill is SolidColorBrush ) 
{
      SolidColorBrush brush = rectFront.Fill as SolidColorBrush;
      someColor = brush.Color
}

в противном случае вам потребуется доступ к GradientStopsКоллекция:

// Generally a GradientStopCollection contains a minimum of two gradient stops.
if ( rectFront.Fill is GradientBrush )
{
    GradientBrush brush = rectFront.Fill as GradientBrush ;
    someColor = brush.GradientStops[ 0 ].Color
}
...