WPF开发:如何避免SuRGeoNix/Flyleaf播放器停止后背景闪现?
解决WPF中Flyleaf播放结束后FlyleafHost背景闪现的问题
方案1:先隐藏FlyleafHost再执行停止/释放操作
在视频播放结束的回调事件中,优先将FlyleafHost的Visibility设为Visibility.Collapsed,再调用播放器的Stop()或Dispose()方法。操作时用户看不到Host的背景,之后再显示目标图片控件即可。
示例代码:player.MediaEnded += (s, e) => { flyleafHost.Visibility = Visibility.Collapsed; player.Stop(); endImageControl.Visibility = Visibility.Visible; };方案2:用重叠容器切换显示层级
将FlyleafHost和图片控件放在同一个Grid容器中(默认重叠布局),图片控件初始设为隐藏。视频播放结束时,先显示图片控件,再隐藏FlyleafHost并处理播放器的停止/释放。此时图片已覆盖在Host上方,即使Host有短暂背景闪现也会被完全遮挡。
XAML示例:<Grid> <flyleaf:FlyleafHost x:Name="flyleafHost" /> <Image x:Name="endImage" Source="/Resources/EndCover.png" Visibility="Collapsed" /> </Grid>后台代码:
player.MediaEnded += (s, e) => { endImage.Visibility = Visibility.Visible; flyleafHost.Visibility = Visibility.Collapsed; player.Dispose(); };方案3:修改FlyleafHost背景为透明或匹配图片底色
若不需要立即隐藏Host,可将FlyleafHost的Background设为Transparent,或设置成与结束图片一致的背景色。这样即使出现短暂闪现,颜色也与后续显示的图片匹配,用户几乎无法察觉。
XAML设置示例:<flyleaf:FlyleafHost x:Name="flyleafHost" Background="Transparent" />
内容的提问来源于stack exchange,提问作者Teppei Abe
相关产品推荐
相关产品推荐

