Как установить Grid.Background для MediaPlayer в UWP? - PullRequest
0 голосов
/ 12 декабря 2018

Как добавить видео в Grid.Background в приложении UWP?

В предыдущей версии я использовал

<Grid.Background>
    <ImageBrush ImageSource="ms-appx:///Assets/carosel3.jpg" Stretch="UniformToFill"/>
</Grid.Background>

1 Ответ

0 голосов
/ 12 декабря 2018

Есть два способа сделать это в UWP.

API композиции

API композиции предлагают CompositionSurfaceBrush, с помощью которых можно рисовать область с пикселями, отрисованными с использованием видео через MediaPlayer.Пример из документации :

Compositor _compositor = ElementCompositionPreview.GetElementVisual(MyGrid).Compositor;
SpriteVisual _videoVisual;
CompositionSurfaceBrush _videoBrush;

// MediaPlayer set up with a create from URI

_mediaPlayer = new MediaPlayer();

// Get a source from a URI. This could also be from a file via a picker or a stream
var source = MediaSource.CreateFromUri(new Uri("https://www.example.com/video.mp4"));
var item = new MediaPlaybackItem(source);
_mediaPlayer.Source = item;
_mediaPlayer.IsLoopingEnabled = true;

// Get the surface from MediaPlayer and put it on a brush
_videoSurface = _mediaPlayer.GetSurface(_compositor);
_videoBrush = _compositor.CreateSurfaceBrush(_videoSurface.CompositionSurface);

_videoVisual = _compositor.CreateSpriteVisual();
_videoVisual.Brush = _videoBrush;

Обратитесь к документации для получения дополнительной информации о поиске одного из множества руководств по использованию API композиции в Интернете (например, здесь ).

Отдельный элемент MediaPlayer

Более простым решением было бы просто поместить MediaPlayerElement под Grid.Когда Grid имеет Transparent фон, видео будет отображаться под Grid.

<Grid>
    <MediaPlayerElement x:Name="mediaPlayer"
                      AreTransportControlsEnabled="False"
                      Source="ms-appx:///SomeVideo.mp4" />
    <Grid>
       ... your content
    </Grid>
</Grid>
...