我用VLCj写了一个媒体播放器; 我正在尝试复制VLC播放器,以便当按下空格键时,屏幕上会短暂出现“播放”一词。这可能吗?
我将如何显示这个临时叠加层?
最佳答案
使用 vlcj 执行此操作的一种方法是使用“选取框”。
选取框由原生 LibVLC 库函数提供,由 vlcj 封装。
第一:
import static uk.co.caprica.vlcj.player.Marquee.marquee;
然后在鼠标单击监听器中:
marquee()
.text("Play")
.location(x, y)
.position(libvlc_marquee_position_e.bottom)
.opacity(0.7f)
.colour(Color.white)
.timeout(5000)
.size(20)
.apply(mediaPlayer);
这是一个“构建器”风格的 API,还有另一个 API,具有用于选取框的单独方法,例如:
mediaPlayer.setMarqueeText("Play");
mediaPlayer.setMarqueeSize(60);
mediaPlayer.setMarqueeOpacity(70);
mediaPlayer.setMarqueeColour(Color.green);
mediaPlayer.setMarqueeTimeout(3000);
mediaPlayer.setMarqueeLocation(300, 400);
mediaPlayer.enableMarquee(true)
所有这些都记录在 vlcj Javadoc 中:
http://caprica.github.io/vlcj/javadoc/3.0.0/uk/co/caprica/vlcj/player/Marquee.html http://caprica.github.io/vlcj/javadoc/3.0.0/uk/co/caprica/vlcj/player/MediaPlayer.html
还有其他方法...
您可以尝试在视频顶部覆盖具有绝对定位的 AWT 标签,这可以工作,但标签不会有透明背景。
您可以使用所谓的“直接”渲染媒体播放器(您自己渲染视频),然后您可以在视频上绘制自己的图形,或者使用 Swing JLabel。在这种情况下,您可以使用透明度。
您甚至可以在视频窗口顶部覆盖一个透明的顶级窗口,并在该窗口中绘制/放置标签。
所有这些方法都在 vlcj 测试源的各种示例中进行了演示。有选取框、轻量级和重量级叠加层的测试示例。
但是使用选取框是最简单的,因此也是推荐的方法。
关于java - JPanel 上的文本叠加,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26028542/