我在VS2017中使用C#并使用Vlc Control来播放视频。
我希望将视频的某些部分与具有透明度的PNG图像重叠。在VS2017中,元素对其父元素是透明的。因此,为了使图像对视频透明,我必须将其设置为视频的子画面。
但是,如果我这样做,图像根本不会显示。视频总是刷新并重叠图像(即使我在图像中执行常量BringToFront
)。
因此,我将图像的父级更改为表单。现在显示图像,但通过它的透明度,我看到了表单的背景,而不是视频。
目标平台是Windows。对此有什么解决方案吗?
答案 0 :(得分:3)
我在Windows窗体中遇到了同样的问题。我相信没有简单的解决方案,您可以使用另一个控件(例如图片框)并使其透明,以便您可以看到它背后的视频。
您可以做的一件事是创建另一个表单,将其设置为topMost,将其MDiParent设置为包含VLC控件的表单,并将其FormBorderStyle设置为None。然后将其背景设置为要叠加的图像,并将其不透明度属性设置为50%。这应该会给你你想要的效果,但这是一个解决方法。
如果可以的话,你应该转移到WPF作为你的UI技术,它应该解决这个问题,并允许你覆盖一个透明度的图片框,它不仅仅显示它背后的主要形式的背景,并实际显示视频。
答案 1 :(得分:0)
目前还不清楚你是如何使用libvlc的。
您是否必须将图像与控件本身混合?你不应该把任何给定的图像与视频帧混合在一起吗?
如果是这样,请尝试使用 - alphamask-mask 过滤器:
--alphamask-mask=<string> Transparency mask Alpha blending transparency mask. Uses a png alpha channel.
如果您使用的是libvlc.net,可以通过添加选项来实现:
vlcContext.StartupOptions.AddOption(<options>);