视频画刷VideoBrush

来源:互联网 发布:金税盘数据导出 编辑:程序博客网 时间:2024/05/18 03:52
在silverlight图像或视频绘制中,设置元素的背景色,前景色,轮廓颜色,填充色等。。画刷是一个比较重要的概念,用来设置元素的颜色或填充内容,以至于达到丰富多彩的效果,主要包括纯色画刷(SolidColorBrush),用来填充纯色,渐变色画刷(包括线性渐变LinearGradientBrush和辐射渐变RadialGradientBrush)来实现图形的渐变色效果,可以使用它们来形成光和影的效果,使 图形界面 元素具有三维外观。还可以使用它们来模拟玻璃、镶边、水和其他光滑表面。还有图形画刷(ImageBrush将图像用作填充、背景和轮廓。本文主要介绍的是视频画刷(VideoBrush)使用视频绘制某个区域。
首先介绍MediaElement 对象,MediaElement表示一个包含音频和/或视频的对象,包含视频或音频对的基本性质长度,宽度,变换等,以及常用方法,暂停,播放,停止,声音的设置,Source属性用来指定相应的媒体对象,若要禁止媒体自动启动,请将AutoPlay 属性设置为false
为了获得更好的性能,请避免将数据绑定到 Position 属性来反映频繁的位置更新(例如,进度条)。而是使用 DispatcherTimer 来查询Position 属性。
 
如果MediaElement是一个存在内存中的视频对象的话,那么视频画刷就是一个把这个内存对象展示出来的画板,
常用的属性如下
opacity 设置或者视频的透明度,SourceName 设置或者获取视频画刷的MediaElement的X:Name.   Stretch获取或设置一个值,该值指定此TileBrush 的内容如何拉伸以适合其图块  ,RelativeTransform 获取或设置要使用相对坐标应用于画笔的变换。

Stretch 属性接受 Stretch 枚举定义的下列值:

  • NoneTileBrush 内容不拉伸以填充图块。

  • UniformTileBrush 内容进行缩放,以适合图块尺寸。但保留该内容的纵横比。

  • UniformToFill:对TileBrush 内容进行缩放,从而可以完全填充输出区域,但保持其原始纵横比。

  • FillTileBrush 内容进行缩放,以适合图块。由于内容的高度和宽度是独立缩放的,因此内容的原始长宽比可能不会保留。也就是说,为了完全填充输出区域,TileBrush 内容可能会失真。

下图举例说明了不同的 Stretch 设置。


 

首先找一个 wmv或者mp4格式的视频
 
 
<Grid x:Name="LayoutRoot"  >
<MediaElement x:Name="kobemv" Source="kobemv.mp4"  AutoPlay="True"></MediaElement>
        <Grid.Background>
            <VideoBrush SourceName="kobemv" Stretch="Uniform"></VideoBrush>
        </Grid.Background>
    </Grid>
这是一个科比的mv ,看看效果 。嘿嘿


下面实现 让这个视频作为文字的前景色

<Grid x:Name="LayoutRoot"  >
<MediaElement x:Name="kobemv" Source="kobemv.mp4" Opacity="0.0" AutoPlay="True"></MediaElement>
        <TextBlock HorizontalAlignment="Left"  FontFamily="Verdana" FontSize="500" FontWeight="Bold"  Name="textBlock1" Text="坤坤" VerticalAlignment="Top">
            <TextBlock.Foreground >
                <VideoBrush SourceName="kobemv" ></VideoBrush>
            </TextBlock.Foreground>
        </TextBlock>
    </Grid>


实现一个简单的简单的立体效果,主要是用了UI的Projection

<Grid x:Name="LayoutRoot"  >
<MediaElement x:Name="kobemv" Source="kobemv.mp4" Opacity="0.0" AutoPlay="True"></MediaElement>
        <StackPanel Background="Gray"  >
            <TextBlock HorizontalAlignment="Left"   FontFamily="Verdana" FontSize="500" FontWeight="Bold"  Name="textBlock1" Text="坤坤" VerticalAlignment="Top">
          
            <TextBlock.Projection >
                <PlaneProjection RotationX="-20" RotationY="-20" RotationZ="20"></PlaneProjection>
            </TextBlock.Projection>
            <TextBlock.Foreground >
               
                <VideoBrush SourceName="kobemv" ></VideoBrush>
            </TextBlock.Foreground>
            </TextBlock>
        </StackPanel>
          
    </Grid>


原创粉丝点击