如何:使用视频绘制区域

此示例演示如何绘制带有媒体的区域。 若要绘制带有媒体的区域,一种方法就是结合使用 MediaElementVisualBrush。 使用 MediaElement 加载和播放媒体,再使用该元素来设置 VisualBrushVisual 属性, 然后可以使用 VisualBrush 来绘制带有已加载媒体的区域。

示例

下面的示例使用 MediaElementVisualBrush 来绘制带有视频的 TextBlock 控件的 Foreground。 此示例将 MediaElementIsMuted 属性设置为 true,使它不发出声音。

            Dim myMediaElement As New MediaElement()
            myMediaElement.Source = New Uri("sampleMedia\xbox.wmv", UriKind.Relative)
            myMediaElement.IsMuted = True

            Dim myVisualBrush As New VisualBrush()
            myVisualBrush.Visual = myMediaElement

            Dim myTextBlock As New TextBlock()
            myTextBlock.FontSize = 150
            myTextBlock.Text = "Some Text"
            myTextBlock.FontWeight = FontWeights.Bold

            myTextBlock.Foreground = myVisualBrush
MediaElement myMediaElement = new MediaElement();
myMediaElement.Source = new Uri("sampleMedia\\xbox.wmv", UriKind.Relative);
myMediaElement.IsMuted = true;

VisualBrush myVisualBrush = new VisualBrush();
myVisualBrush.Visual = myMediaElement;

TextBlock myTextBlock = new TextBlock();
myTextBlock.FontSize = 150;
myTextBlock.Text = "Some Text";
myTextBlock.FontWeight = FontWeights.Bold;

myTextBlock.Foreground = myVisualBrush;
<TextBlock FontSize="100pt" Text="Some Text" FontWeight="Bold">
  <TextBlock.Foreground>
    <VisualBrush>
      <VisualBrush.Visual>
        <MediaElement Source="sampleMedia\xbox.wmv" IsMuted="True" />
      </VisualBrush.Visual>
    </VisualBrush>
  </TextBlock.Foreground>
</TextBlock>

由于 VisualBrush 是从 TileBrush 类继承的,因此它可以提供多种平铺模式。 通过将 VisualBrushTileMode 属性设置为 Tile,并将它的 Viewport 属性设置为小于正在绘制的区域的值,可以创建图块图案。

下面的示例与上一个示例基本相同,二者的区别在于 VisualBrush 根据视频生成模式。

            Dim myMediaElement As New MediaElement()
            myMediaElement.Source = New Uri("sampleMedia\xbox.wmv", UriKind.Relative)
            myMediaElement.IsMuted = True

            Dim myVisualBrush As New VisualBrush()
            myVisualBrush.Viewport = New Rect(0, 0, 0.5, 0.5)
            myVisualBrush.TileMode = TileMode.Tile
            myVisualBrush.Visual = myMediaElement

            Dim myTextBlock As New TextBlock()
            myTextBlock.FontSize = 150
            myTextBlock.Text = "Some Text"
            myTextBlock.FontWeight = FontWeights.Bold

            myTextBlock.Foreground = myVisualBrush
MediaElement myMediaElement = new MediaElement();
myMediaElement.Source = new Uri("sampleMedia\\xbox.wmv", UriKind.Relative);
myMediaElement.IsMuted = true;

VisualBrush myVisualBrush = new VisualBrush();
myVisualBrush.Viewport = new Rect(0, 0, 0.5, 0.5);
myVisualBrush.TileMode = TileMode.Tile;
myVisualBrush.Visual = myMediaElement;

TextBlock myTextBlock = new TextBlock();
myTextBlock.FontSize = 150;
myTextBlock.Text = "Some Text";
myTextBlock.FontWeight = FontWeights.Bold;

myTextBlock.Foreground = myVisualBrush;
<TextBlock FontSize="100pt" Text="Some Text" FontWeight="Bold">
  <TextBlock.Foreground>
    <VisualBrush Viewport="0,0,0.5,0.5" TileMode="Tile">
      <VisualBrush.Visual>

        <MediaElement Source="sampleMedia\xbox.wmv" IsMuted="True" /> 
      </VisualBrush.Visual>
    </VisualBrush>
  </TextBlock.Foreground>
</TextBlock>

有关如何向应用程序添加内容文件(如媒体文件)的信息,请参见 WPF 应用程序资源、内容和数据文件。 在添加媒体文件时,必须将其作为内容文件(而非资源文件)添加。

请参见

参考

VisualBrush

概念

使用图像、绘图和 Visual 进行绘制

TileBrush 概述

多媒体概述