视频透明的图像

Image with transparency over video

我在 VS2017 中使用 C# 并有一个 Vlc 控件来播放视频。

我想将视频的某些部分与透明的 PNG 图像重叠。在 VS2017 中,元素对其父元素是透明的。因此,为了使图像对视频透明,我必须将其设置为视频的子对象。

但是如果我这样做,图像根本不会显示。视频总是刷新并与图像重叠(即使我在图像中做了一个常量 BringToFront)。

所以,我把图片的Parent改成了form。现在图像显示了,但通过它的透明度我看到了表单的背景,而不是视频。

目标平台是Windows。有解决办法吗?

不太清楚您是如何使用 libvlc 的。

是否必须将图像与控件本身混合?您不应该将任何给定图像与视频帧混合吗?

如果是这样,请尝试使用 --alphamask-mask 过滤器:

   --alphamask-mask=<string>
     Transparency mask
     Alpha blending transparency mask. Uses a png alpha channel.

如果您使用 libvlc.net,您可以通过添加一个选项来实现:

vlcContext.StartupOptions.AddOption(<options>);

我在使用 windows 表格时遇到了同样的问题。我相信没有简单的解决方案可以让您使用另一个控件(例如图片框)并使其透明,以便您可以看到它后面的视频。

您可以做的一件事是创建另一个表单,将其设置为 topMost,将其 MDiParent 设置为包含 VLC 控件的表单并将其 FormBorderStyle 设置为 None。然后将其背景设置为您要叠加的图像,并将其不透明度 属性 设置为 50%。这应该会给你你想要的效果,但它有点变通。

如果可以的话,您应该将 WPF 作为您的 UI 技术,它应该可以解决这个问题,并允许您覆盖一个具有透明度的图片框,而不仅仅是显示其背后主窗体的背景并实际显示视频。