这类问题多次asked次 但由于某种原因,它没有按预期工作! 我在Panel(Control)中使用vlc,然后在vlc控件的顶部放置一个标签。 我希望标签的背景透明。我使用下面的代码
label1.Parent = vlcControl1;
label1.backColor = Color.Transparent;
这里的问题是标签显示,直到vlc没有播放任何媒体
一旦我播放媒体文件,标签就会被隐藏。
我也尝试了
label1.bringToFront();
label1.Visible=true;
如果我停止vlc播放视频文件,vlcControl1.Stop();
标签将会显示。
答案 0 :(得分:3)
Windows Forms版本存在空域问题,我不知道解决它的可用解决方法。
对于WPF版本,这是VlcDotNet最后一个版本的已知问题:Wpf VlcControl seems to ignore ZIndex和VlcControl is always on the top of my window它发生,因为WPF VLC控件是显示Windows窗体控件的HwndHost。
已知的替代方案应该是,使用WPF和:
答案 1 :(得分:1)
这是2019年的最新状态:
从Vlc.DotNet 3.0开始,WPF控件没有空域问题。但是,渲染是在CPU上完成的,这会导致性能下降(也就是您不应该使用它)(https://github.com/ZeBobo5/Vlc.DotNet/issues/296)
使用LibVLCSharp,采取了另一种方法来实施空域黑客攻击。
可悲的是,这是所有的权衡...
答案 2 :(得分:1)
我在手动设置字幕时遇到了这个问题,并且我更改了策略以不使用我自己的标签或任何其他标签。实际上,Libvlc C#(libvlcSharp)可以使用Marquee进行此操作。这是我的代码:
_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
position具有选项like this,您还可以通过_mp.SetMarqueeInt(VideoMarqueeOption.X, 50);
和_mp.SetMarqueeString(VideoMarqueeOption.Y, 50);