В Silverlight 4: Как получить цвет из недвижимости заполнения
-
26-09-2019 - |
Вопрос
В моем 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
Не связан с StackOverflow