“BitmapCacheBrush总是从一个目标元素的缓存或者通过BitmapCache 属性定义的缓存来渲染并且BitmapCacheBrush类忽略以下位于根Visual的属性:VisualOffset,VisualTransform,VisualClip,VisualEffect,VisualOpacity,VisualOpacity。这种行为有别于VisualBrush类。”
--http://social.msdn.microsoft.com/Forums/zh-CN/wpfzhchs/thread/96a254b8-ab18-4096-9c9e-255822decd2f
测试代码(部分取自MSDN)
<BitmapCacheBrush x:Key="cachedr1" Target="{Binding ElementName=r1}">
<BitmapCacheBrush.BitmapCache>
<BitmapCache EnableClearType="False" RenderAtScale="0.4" SnapsToDevicePixels="False" />
</BitmapCacheBrush.BitmapCache>
</BitmapCacheBrush>
<VisualBrush x:Key="visualr1" Visual="{Binding ElementName=r1}"></VisualBrush>
</Window.Resources>
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="*" />
<RowDefinition Height="*" />
<RowDefinition Height="*" />
<RowDefinition Height="*" />
<RowDefinition Height="*" />
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*" />
<ColumnDefinition Width="*" />
<ColumnDefinition Width="*" />
<ColumnDefinition Width="*" />
<ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>
<Button Background="{StaticResource cachedRichTextBoxBrush}" Content="Button" Name="button1" FontWeight="Bold" />
<Button Background="{StaticResource cachedRichTextBoxBrush}" Content="Button" Name="button2" Grid.Column="1" FontWeight="Bold" />
<Button Background="{StaticResource cachedr1}" Content="Button" Name="button3" Grid.Column="2" FontWeight="Bold" />
<Button Background="{StaticResource cachedr1}" Content="Button" Name="button4" Grid.Column="3" FontWeight="Bold" />
<Button Background="{StaticResource cachedRichTextBoxBrush}" Content="Button" Name="button5" Grid.Column="4" FontWeight="Bold" />
<Button Background="{StaticResource cachedRichTextBoxBrush}" Content="Button" Name="button6" Grid.Row="1" FontWeight="Bold" />
<Button Background="{StaticResource cachedr1}" Content="Button" Grid.Column="1" Name="button7" Grid.Row="1" FontWeight="Bold" />
<Button Background="{StaticResource cachedr1}" Content="Button" Grid.Column="2" Name="button8" Grid.Row="1" FontWeight="Bold" />
<Button Background="{StaticResource cachedRichTextBoxBrush}" Content="Button" Grid.Column="3" Name="button9" Grid.Row="1" FontWeight="Bold" />
<Button Background="{StaticResource cachedRichTextBoxBrush}" Content="Button" Grid.Column="4" Name="button10" Grid.Row="1" FontWeight="Bold" />
<Button Background="{StaticResource cachedr1}" Content="Button" Name="button11" Grid.Row="2" FontWeight="Bold" />
<Button Background="{StaticResource cachedr1}" Content="Button" Grid.Column="1" Name="button12" Grid.Row="2" FontWeight="Bold" />
<Button Background="{StaticResource cachedRichTextBoxBrush}" Content="Button" Grid.Column="2" Name="button13" Grid.Row="2" FontWeight="Bold" />
<Button Background="{StaticResource cachedRichTextBoxBrush}" Content="Button" Grid.Column="3" Name="button14" Grid.Row="2" FontWeight="Bold" />
<Button Background="{StaticResource visualr1}" Content="Button" Grid.Column="4" Name="button15" Grid.Row="2" FontWeight="Bold" />
<Button Background="{StaticResource visualr1}" Content="Button" Name="button16" Grid.Row="3" FontWeight="Bold" />
<Button Background="{StaticResource cachedRichTextBoxBrush}" Content="Button" Grid.Column="1" Name="button17" Grid.Row="3" FontWeight="Bold" />
<Button Background="{StaticResource cachedRichTextBoxBrush}" Content="Button" Grid.Column="2" Name="button18" Grid.Row="3" FontWeight="Bold" />
<Button Background="{StaticResource visualr1}" Content="Button" Grid.Column="3" Name="button19" Grid.Row="3" FontWeight="Bold" />
<Button Background="{StaticResource visualr1}" Content="Button" Grid.Column="4" Name="button20" Grid.Row="3" FontWeight="Bold" />
<Button Background="{StaticResource cachedRichTextBoxBrush}" Content="Button" Name="button21" Grid.Row="4" FontWeight="Bold" />
<Button Background="{StaticResource cachedRichTextBoxBrush}" Content="Button" Grid.Column="1" Name="button22" Grid.Row="4" FontWeight="Bold" />
<Button Background="{StaticResource visualr1}" Content="Button" Grid.Column="2" Name="button23" Grid.Row="4" FontWeight="Bold" />
<Button Background="{StaticResource visualr1}" Content="Button" Grid.Column="3" Name="button24" Grid.Row="4" FontWeight="Bold" />
<Button Background="{StaticResource cachedRichTextBoxBrush}" Content="Button" Grid.Column="4" Name="button25" Grid.Row="4" FontWeight="Bold" />
<RichTextBox Name="r1">
<RichTextBox.CacheMode>
<BitmapCache EnableClearType="True" RenderAtScale="1" SnapsToDevicePixels="True" />
</RichTextBox.CacheMode>
<FlowDocument>
<Paragraph>
<Run Foreground="Red" FontSize="16" Text="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ" />
</Paragraph>
</FlowDocument>
</RichTextBox>
</Grid>
</Window>
效果图: