淺談WPF的VisualBrush


    首先看看VisualBrush的解釋,msdn上面的解釋是使用 Visual 繪制區域,那么我們再來看看什么是Visual呢?官方的解釋是:獲取或設置畫筆的內容,Visual 是直接繼承自DependencyObject,UIElement也是直接繼承自Visual,我們常見的控件都是繼承自Visual,Visual可以實現動態綁定,比如我們可以在代碼中這樣寫: <VisualBrush Visual="{Binding TodayPeriod}" Stretch="Fill"></VisualBrush> 這樣我們就可以把一個繼承自Visual的控件(此處為TodayPeriod的一個UserControl)通過綁定的方式綁定到Visual中,我們再來看看VisualBrush這個類,首先來看一段示例代碼:

                         <Border Grid.Column="1">
                                <Border.Background>
                                    <VisualBrush Stretch="Uniform">
                                        <VisualBrush.Visual>
                                            <Ellipse Fill="#003769" Opacity="0.6" Stretch="Fill" HorizontalAlignment="Stretch" VerticalAlignment="Stretch"                                                Width="100" Height="100"></Ellipse>
                                        </VisualBrush.Visual>
                                    </VisualBrush>
                                </Border.Background>
                                <StackPanel Orientation="Vertical" HorizontalAlignment="Center" VerticalAlignment="Center">
                                    <TextBlock FontSize="120" Text="{Binding SuccessError.Total,RelativeSource={RelativeSource TemplatedParent}}" Horizont                                         alAlignment="Center" VerticalAlignment="Center" Margin="0 0 0 -10"></TextBlock>
                                    <TextBlock FontSize="40" Text="總數" HorizontalAlignment="Center" VerticalAlignment="Center" Margin="0 -10 0 0">
</TextBlock> </StackPanel> </Border>

  這段代碼是設置Border的Background為一個Ellipse,然后再在這個Ellipse上面放置兩個TextBlock控件,本質上Background屬性屬於Brush類型,而我們的VisualBrush剛好繼承自這個類型,我們來看一看VisualBrush的繼承關系:

                                                                               System.Object

                                                                               System.Windows.Threading.DispatcherObject

                                                                               System.Windows.DependencyObject

                                                                               System.Windows.Freezable

 System.Windows.Media.Animation.Animatable

                                                                              System.Windows.Media.Brush

                                                                              System.Windows.Media.TileBrush
                                                                              System.Windows.Media.VisualBrush

所以在上面的代碼中我們可以設置Border的Background為VisualBrush,我們在很多地方都是可以使用VisualBrush的,這里需要我們平時在使用的時候不斷去反思去總結。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM