【问题标题】:Delphi MediaPlayer adjust sizeDelphi MediaPlayer 调整大小
【发布时间】:2014-11-16 16:02:38
【问题描述】:

我有一个使用媒体播放器和媒体播放器控制组件加载和播放视频的简单表单。有没有办法在 RAD Studio XE6 中使用滚动条或类似的东西来调整播放视频的大小。

【问题讨论】:

  • 哪个平台?并使用滚动条调整大小。我以前从未遇到过该用户界面。你确定这就是你的意思吗?你还在为使用滚动条而苦恼吗?或者寻找如何调整大小?我猜是后者,在这种情况下谈论滚动条会让人分心。

标签: delphi delphi-xe6


【解决方案1】:

调整大小通常是通过调整承载视口的表单的大小来完成的,而不是使用滚动条。尝试将媒体播放器放在一个相当大的表单或面板中,并在所有四个边上都有锚点,以便在您调整表单的角时它可以扩展和收缩。

【讨论】:

  • 好吧,让我们忘记滚动条,我只是说希望能画出更好的画面。假设我正在播放一个 340x180 的视频,我想将其放大两倍,或者放大 x2,因此新的视频尺寸将为 680x360。我在 embarcadero 文档中找不到任何类似的选项。
  • 放到一个面板中,设置为与客户端对齐,然后设置面板的尺寸。我不知道它是否会让您按比例缩放它,但您可以轻松地在 IDE 中进行测试。只需更改面板的高度和/或宽度,看看会发生什么。让我们知道。
  • 我不确定我是否按照我应该做的一切,但视频的行为如下。如果我调整面板大小并使其小于我的原始视频尺寸,那么视频将随之而来。如果我再次将面板放大,视频将保持不变。
【解决方案2】:

您可以通过调整 DisplayRect 属性来实现某种 ZoomIn 或 ZoomOut 功能:

http://docwiki.embarcadero.com/Libraries/XE6/en/Vcl.MPlayer.TMediaPlayer.DisplayRect

首先,您可能希望将 DisplayRect 设置为使用 Display 属性选择为呈现目标的控件/组件的大小:

http://docwiki.embarcadero.com/Libraries/XE6/en/Vcl.MPlayer.TMediaPlayer.Display

为了避免不均匀的宽幅拉伸,我建议您添加必要的代码,以便能够在保持纵横比的同时计算正确的 DisplayRect 尺寸。

如果您愿意,您可以使 DisplayRect 比您的渲染控件更大。通过这样做,您就真正实现了放大效果。

请注意,这只会拉伸视频内容,因此您可能会遇到质量损失,因为 TMediaPlayer 没有像许多商业媒体播放器那样使用任何特殊过滤器。

编辑:我没有在 FireMonkey 平台上使用 TMediaPlayer 的经验,但是在查看文档之后,似乎事情已经发生了很大变化。

例如,在 FMX 上有一个名为 TMediaPlayerControll 的特殊组件,它是渲染视频所必需的。

http://docwiki.embarcadero.com/Libraries/XE7/en/FMX.Media.TMediaPlayerControl

但是查看文档我找不到任何特殊的属性或方法来控制视频大小。所以我猜想实现 ZoomIn 或 ZoomOut 功能将使用与普通 FireMonkex 组件相同的方法。

【讨论】:

  • 我在使用 FireMonkey 时注意到本示例中的父级是 vcl 组件,这可能是出现 DisplayRect 属性不存在错误的原因吗?
  • 你还没有提到你在FireMonkey平台上工作。我已经更新了我的答案。
  • 确实我应该提到我没有使用 VCL。不过,您能否举个例子,因为我对使用 Delphi 和 RAD Studio 很陌生。
  • 我回家后会尝试制作一个,因为我无法访问我的开发计算机。同时检查 Delphi 附带的 FMX.MediaPlayerHD 示例,该示例位于示例文件夹中,以获取有关此的更多信息。如果您尚未在 Delphi 中安装 Samples,您可以从以下地址获取该特定示例:docwiki.embarcadero.com/CodeExamples/XE6/en/…
  • 当然,在我问之前我检查了示例文件夹。还尝试应用一些效果,例如工具面板中的反转或放大,但没有结果。
猜你喜欢
  • 2023-03-23
  • 1970-01-01
  • 1970-01-01
  • 2014-07-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-02-02
  • 1970-01-01
相关资源
最近更新 更多