В Silverlight 4: Как получить цвет из недвижимости заполнения

StackOverflow https://stackoverflow.com/questions/4228906

Вопрос

В моем 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

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

Спасибо

Простой код

Это было полезно?

Решение

Вот проблема .... Есть несколько различных типов кистей. Итак, вам придется получить доступ к цветовой собственности по-разному в зависимости от типа кисти, которую вы получаете.

SolidColorbrush
Линуариал
РадиальградиентБизнес

Если вы хотите цвет кисти, и это сплошная обработка, то вы можете бросить его и получить цвет таким образом:

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

В противном случае вам придется получить доступ к коллекции градиента:

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

Другие советы

Отбрасывайте его на солидарнуюbolbrush;

var brush = rectFront.Fill as SolidColorBrush;
if(brush != null)
    someColor = brush.Color
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top