locked
FAQ: BitmapCacheBrush 和 VisualBrush 之间的区别? RRS feed

  • 问题

  • 为了帮助大家更好地学习 WPF 技术,微软论坛技术支持团队编辑了一些列的 "WPF 常见问题及解答" 精华帖。

    本帖的主题是:BitmapCacheBrush 和 VisualBrush 之间的区别?

    如果您觉得这个帖子对您的学习、工作有所帮助,请再把这个帖子分享给你的同学、同事和朋友。

    如果您想阅读更多的 "WPF 常见问题及解答",请打开索引页面:

    如果您对我们的论坛在线支持服务有任何的意见或建议,请通过邮件告诉我们。
    2011年1月26日 14:06

答案

  • BitmapCacheBrush 允许使用缓存内容进行区域描绘。BitmapCacheBrush类似于VisualBrush 某些情况我们可以使用BitmapCacheBrush来代替VisualBrush。以下例子使用BitmapCacheBrushVisualBrush描绘了一个矩形:

     

    <StackPanel Orientation="Horizontal">

     <Rectangle Width="100" Height="25" Margin="10">

      <Rectangle.Fill>

       <VisualBrush>

        <VisualBrush.Visual>

         <StackPanel Orientation="Horizontal">

          <TextBlock Text="Hello world!"/>

          <Button Content="Button"/>

         </StackPanel>

        </VisualBrush.Visual>

       </VisualBrush>

      </Rectangle.Fill>

     </Rectangle>

     

     <Rectangle Width="100" Height="25" Margin="10">

      <Rectangle.Fill>

       <BitmapCacheBrush>

        <BitmapCacheBrush.Target>

         <StackPanel Orientation="Horizontal">

          <TextBlock Text="Hello world!"/>

          <Button Content="Button"/>

         </StackPanel>

        </BitmapCacheBrush.Target>

        <BitmapCacheBrush.BitmapCache>

         <BitmapCache SnapsToDevicePixels="True" RenderAtScale="2"/>

        </BitmapCacheBrush.BitmapCache>

       </BitmapCacheBrush>

      </Rectangle.Fill>

     </Rectangle>

    </StackPanel>

    但是,BitmapCacheBrush总是从一个目标元素的缓存或者通过BitmapCache 属性定义的缓存来渲染并且BitmapCacheBrush类忽略以下位于根Visual的属性: VisualOffsetVisualTransformVisualClipVisualEffectVisualOpacityVisualOpacity。这种行为有别于VisualBrush类。

     


    如果您对我们的论坛在线支持服务有任何的意见或建议,请通过邮件告诉我们。
    2011年1月26日 14:08