2010-11-19 48 views
1

在我的XAML我有:在Silverlight 4:如何獲得出彩的填充屬性

<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

這裏是問題....有幾種不同類型的畫筆。所以,你將不得不根據你得到的筆刷類型不同地訪問顏色屬性。

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

其轉換爲的SolidColorBrush;

var brush = rectFront.Fill as SolidColorBrush; 
if(brush != null) 
    someColor = brush.Color