TMediaplayerControl 上的控件无法显示

The controls on TMediaplayerControl cannot be displayed

我正在使用 Firemonkey 开发一个 Win64 视频应用程序。

我使用TMediaPlayer 和TMediaPlayerControl 以全屏模式播放视频文件。

希望在播放视频的时候,在播放画面上叠加播放时间,进度信息,几个播放控制按钮。

但是我发现在TMediaPlayerControl中添加的这些组件无法正常显示。查看了TMediaPlayer相关的源码,发现视频播放的window会一直显示在顶层,从而完全覆盖了TMediaPlayerControl上面的组件。

有什么办法可以解决这个问题吗?

您可以通过在 TMediaPlayerControl 所在的表单顶部(按 z 顺序)添加透明覆盖表单来实现。您可以通过设置 Transparency = True 使表单透明。让它停留在你的主表单集 FormStyle = StayOnTop 之上。您还想设置其 BorderStyle = None.

将您想要 "float" 放置在这个透明表单上的视频上方的所有按钮、面板等。由于窗体是透明的,因此控件将漂浮在视频前面。

要使用透明窗体上的控件控制您的TMediaPlayer,您需要在辅助窗体的implementation 下添加uses MainForm

您可能还希望根据尺寸变化来同步表格,以防在不同尺寸的显示器上使用。在主窗体上使用 OnFormResize。在尝试访问覆盖表单之前检查覆盖表单是否存在(例如,if overlayForm <> nil then ...),因为它是在主表单之后创建的。根据主窗体设置叠加窗体的宽高。根据需要重新定位控件。