Compartir a través de


Cómo: Pintar un área con un vídeo

En este ejemplo se muestra cómo pintar una zona con materiales. Una manera de pintar un área con un medio es usar un MediaElement junto con un VisualBrush. Utilice el MediaElement para cargar y reproducir los medios, y luego úselo para establecer la propiedad Visual del VisualBrush. A continuación, puede usar VisualBrush para pintar un área con el material cargado.

Uso de MediaElement con un VisualBrush

En el ejemplo siguiente se usan MediaElement y VisualBrush para pintar el Foreground de un control TextBlock con Video. En este ejemplo, se establece la propiedad IsMuted de MediaElement a true para que no genere ningún sonido.

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;
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
<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>

Uso de VisualBrush con el medio cargado

Dado que VisualBrush hereda de la TileBrush clase , proporciona varios modos de mosaico. Al establecer la propiedad TileMode de un VisualBrush a Tile y establecer su propiedad Viewport a un valor menor que el área que está pintando, puede crear un patrón en mosaico.

El ejemplo siguiente es idéntico al ejemplo anterior, excepto que VisualBrush genera un patrón a partir del vídeo.

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;
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
<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>

Para obtener información sobre cómo agregar un archivo de contenido, como un archivo multimedia, a la aplicación, vea Recursos de aplicación de WPF, contenido y archivos de datos. Al agregar un archivo multimedia, debe agregarlo como un archivo de contenido, no como un archivo de recursos.

Consulte también