winforms 在覆盖视频上绘制透明控件(文本)(VLC Winform)

niknxzdl  于 2023-03-31  发布在  其他
关注(0)|答案(4)|浏览(297)

这类问题是asked很多次。
但是由于某种原因,它没有像预期的那样工作!
我使用vlc在一个面板(控制)然后放置在VLC控件顶部的标签。我想标签的背景是透明的。我用下面的代码

label1.Parent = vlcControl1;
  label1.backColor = Color.Transparent;

这里的问题是,标签显示,直到VLC不播放任何媒体。
当我播放一个媒体文件,标签被隐藏.
我也试过

label1.bringToFront();
  label1.Visible=true;

如果我停止VLC播放视频文件vlcControl1.Stop();标签将是可见的.

mfpqipee

mfpqipee1#

Windows窗体版本有空域问题,我不知道解决这个问题的可行方法。
对于WPF版本,这是VlcDotNet最新版本的已知问题:Wpf VlcControl seems to ignore ZIndexVlcControl is always on the top of my window这是因为WPF VLC控件是显示Windows窗体控件的HwndHost。
已知的替代方案应该是,使用WPF和:
1.使用旧版本的VlcDotNet(版本1.2.0.0没有空域问题)
1.使用具有纯WPF实现的替代控件,例如Meta.Vlc
1.针对空域问题实施变通方法,例如AirspacePopup

oknrviil

oknrviil2#

以下是2019年的最新技术水平:
从Vlc.DotNet3.0开始,WPF控件没有空域问题。但是,渲染是在CPU上完成的,这会杀死perf(也就是说,你不应该使用它)(https://github.com/ZeBobo5/Vlc.DotNet/issues/296)。
对于LibVLCSharp,采取了另一种方法,实现了空域黑客。
可悲的是,这都是权衡。。

wz1wpwve

wz1wpwve3#

我有这个问题,设置字幕手,我改变了我的策略,不使用任何标签从我自己的或其他任何东西.实际上Libvlc C#(libvlcSharp)有一个选项,这样做与字幕.这是我的代码:

_mediaPlayer.SetMarqueeInt(VideoMarqueeOption.Enable, 1); //enable marquee option
_mediaPlayer.SetMarqueeInt(VideoMarqueeOption.Size, 32); //set the font size 
_mediaPlayer.SetMarqueeInt(VideoMarqueeOption.Position, 8); //set the position of text
_mediaPlayer.SetMarqueeString(VideoMarqueeOption.Text, "my text"); //to set subtitle or any other text

位置有选项like this,也可以通过_mp.SetMarqueeInt(VideoMarqueeOption.X, 50);_mp.SetMarqueeString(VideoMarqueeOption.Y, 50);设置位置

fhity93d

fhity93d4#

或者在另一个窗体上使用vlc .. behind.然后打开form2,上面有控件。将控件放在第二个窗体上,带有“透明背景”,它们将浮在视频上。有时需要修复抗锯齿

相关问题