c – 如何在FireMonkey(FMX,FM3)中显示流畅的视频?

有没有人想出如何在FireMonkey应用程序,HD或3D中显示流畅的视频(即一系列位图)?在VCL中,您可以从一个线程写入画布,这将完美地工作,但这在FMX中不起作用.更糟糕的是,显然唯一可靠的方法是使用T Image,这似乎是从主线程更新(打开菜单和视频暂时冻结).我可以找到的所有EMB示例都可以从主线程写入timage,或者使用Synchronize().这些限制使FMX无法用于体面的视频显示,因此我正在寻找黑客或可能绕过FMX.我使用XE5 / C但欢迎任何建议.目标操作系统是 Windows 7和 Windows 7. OS X.谢谢!

解决方法

如何在表单上放置一个TPaintBox来保存视频.在OnPaint方法中,您只需将下一帧绘制到paintBox画布.现在在表单上放置一个TTimer,将间隔设置为所需的帧速率.在计时器的OnTimer事件中,只需编写paintBox1.repaint

无论程序正在做什么,这都应该为您提供常规帧.

为了更加安全,您可以在OnTimer事件中增加帧编号.现在,在paintBox paint方法中,您可以知道要绘制哪个框架.这意味着如果其他东西调用了paint方法和定时器,你将不会跳帧 – 你最终会重新绘制相同的帧以进行额外的OnPaint调用.

我使用它来进行蚂蚁选择,尽管我更进一步使用覆盖的画布,因此我可以独立绘制选择和底层的绘图框画布,以便在选择更改时无需重新绘制主画布.这需要调用API,但我想你不需要它,除非你做的是透明色的视频.

相关文章

本程序的编译和运行环境如下(如果有运行方面的问题欢迎在评...
水了一学期的院选修,万万没想到期末考试还有比较硬核的编程...
补充一下,先前文章末尾给出的下载链接的完整代码含有部分C&...
思路如标题所说采用模N取余法,难点是这个除法过程如何实现。...
本篇博客有更新!!!更新后效果图如下: 文章末尾的完整代码...
刚开始学习模块化程序设计时,估计大家都被形参和实参搞迷糊...