1

vlcj MediaPlayerの上に透明な背景を持つJLabelを追加するには?

以下にソースを置きますが、JLabel には透明な背景が設定されていないため、正常に動作しません。

import com.sun.jna.NativeLibrary;
import javax.swing.*;
import uk.co.caprica.vlcj.component.EmbeddedMediaPlayerComponent;
import uk.co.caprica.vlcj.runtime.RuntimeUtil;

class VideoExample extends JFrame {

    private EmbeddedMediaPlayerComponent mediaPlayerComponent;

    public VideoExample(String path) {
        super("Простой видео плеер");
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setSize(640, 480);

        //Create JLayeredPane 
        JLayeredPane mainLayer = new JLayeredPane();
        mainLayer.setSize(640,480);

        //Create MediaPlayer on background
        mediaPlayerComponent = new EmbeddedMediaPlayerComponent();
        mediaPlayerComponent.setLocation(0, 0);
        mediaPlayerComponent.setSize(mainLayer.getSize());

        //Create MediaPlayer on foreground
        JLabel label = new JLabel("LABEL", JLabel.CENTER);
        label.setBounds(100, 100, 200, 100);
        label.setOpaque(false);

        mainLayer.add(mediaPlayerComponent, JLayeredPane.DEFAULT_LAYER); //add mediaPlayer in DEFAULT_LAYER
        mainLayer.add(label, JLayeredPane.PALETTE_LAYER); //add label in PALETTE_LAYER
        add(mainLayer); // add JLayeredPane in JFrame 

        setVisible(true);
        mediaPlayerComponent.getMediaPlayer().playMedia(path);
    }

    public static void main(String[] args) {
        NativeLibrary.addSearchPath(RuntimeUtil.getLibVlcLibraryName(), System.getProperty("user.dir") + "/lib/vlc64");
        final String mrl = "D:\\Candlelight_QT.mov";
        new VideoExample(mrl);
    }
}

結果は次のとおりです。

結果 http://vitamin.vipdesign.com.ua/1n7tJ.jpg

4

1 に答える 1

2

時間をかけてvlcj wikiを読む必要があります

重いビデオ サーフェスの Canvas コンポーネントの上に軽量の透明な JComponent を単純に追加することはできません。これは機能しません。

これは、同じ主題に関する以前の投稿から私が疑ったことです

詳細については、オーバーレイ グラフィックスをご覧ください。

于 2013-06-05T06:43:34.787 に答える