Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/386.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java JMF组件上的绘制_Java_Swing_Jmf_Augmented Reality - Fatal编程技术网

Java JMF组件上的绘制

Java JMF组件上的绘制,java,swing,jmf,augmented-reality,Java,Swing,Jmf,Augmented Reality,我正在从网络摄像头捕获流,并希望在视频图像的顶部绘制一些内容。我试着在下面的例子中,问题是无论我如何安排组件,另一个组件总是在后台。 有办法解决这个问题吗 public class SwingCapture extends JPanel { private static final long serialVersionUID = -1284686239737730338L; private static Player player = null; public static final int

我正在从网络摄像头捕获流,并希望在视频图像的顶部绘制一些内容。我试着在下面的例子中,问题是无论我如何安排组件,另一个组件总是在后台。 有办法解决这个问题吗

public class SwingCapture extends JPanel {

private static final long serialVersionUID = -1284686239737730338L;
private static Player player = null;
public static final int WIDTH = 640;
public static final int HEIGHT = 480;
private MediaLocator ml = null;

public SwingCapture() 
{
    setLayout(null);
    setSize(WIDTH, HEIGHT);

    ml = new MediaLocator("vfw:Microsoft WDM Image Capture (Win32):0"); 
    try  {
        player = Manager.createRealizedPlayer(ml);
        player.start();

        Component comp = null;
        if ((comp = player.getVisualComponent()) != null) {
            add(comp);   
            comp.setBounds(0, 0, 640, 480);
        }
        add(Canvas.getInstance());
        Canvas.getInstance().setBounds(0, 0, 640, 480);
    } 
    catch (Exception e) 
    {
      e.printStackTrace();
    }
}

public static void playerclose() {
   player.close();
   player.deallocate();
}
}

我已经解决了这个问题。我使用了Manager.setHint(Manager.LIGHTWEIGHT\u渲染器,true); 和一个杰拉耶尔潘

public class SwingCapture extends JPanel {
private static final long serialVersionUID = -1284686239737730338L;
public static Player player = null;
public static final int WIDTH = 640;
public static final int HEIGHT = 480;
public MediaLocator ml = null;

public SwingCapture() {
    setLayout(null);
    setSize(WIDTH, HEIGHT);
    JLayeredPane jLP = new JLayeredPane(); 
    jLP.setBounds(0,0,800,600);
    ml = new MediaLocator("vfw:Microsoft WDM Image Capture (Win32):0"); 
    try  {
        Manager.setHint(Manager.LIGHTWEIGHT_RENDERER, true);
        player = Manager.createRealizedPlayer(ml);
        player.start();
        jLP.add(Canvas.getInstance());
        Canvas.getInstance().setBounds(0, 0, 200, 200);
        Component comp = null;
        if ((comp = player.getVisualComponent()) != null) {
            jLP.add(comp, -1);   
            comp.setBounds(0, 0, 640, 480);
        }

        add(jLP);
    } catch (Exception e) {
      e.printStackTrace();
    }
}

 public static void playerclose() 
 {
    player.close();
    player.deallocate();
 }
}