Dela via


Gör så här: Måla ett område med en video

Det här exemplet visar hur du målar ett område med målningsmaterial. Ett sätt att måla en yta med media är att använda en MediaElement tillsammans med en VisualBrush. Använd MediaElement för att läsa in och spela upp mediet och använd det sedan för att ange egenskapen Visual för VisualBrush. Du kan sedan använda VisualBrush för att måla ett område med det inlästa mediet.

Använda ett MediaElement med en VisualBrush

I följande exempel används en MediaElement och en VisualBrush för att måla Foreground på en TextBlock-styrning med video. I det här exemplet anges egenskapen IsMuted för MediaElement till true så att den inte genererar något ljud.

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>

Använd VisualBrush med det inlästa mediet

Eftersom VisualBrush ärver från klassen TileBrush innehåller den flera tiling-lägen. Genom att ange egenskapen TileMode för en VisualBrush till Tile och genom att ange dess Viewport egenskap till ett värde som är mindre än det område som du målar, kan du skapa ett kaklat mönster.

Följande exempel är identiskt med föregående exempel, förutom att VisualBrush genererar ett mönster från videon.

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>

Information om hur du lägger till en innehållsfil, till exempel en mediefil, i ditt program finns i WPF-programresurs, innehåll och datafiler. När du lägger till en mediefil måste du lägga till den som en innehållsfil, inte som en resursfil.

Se även