因此,我製作了一個stopmotion應用程序 - 來自我的攝像頭的實時饋送位於JLayeredPane中頂層(第10層)內的JPanel(帶有setOpaque(false)) - 基本上,當我拍攝一張照片時,我想將它添加到其中一個較低層,以便在屏幕上顯示以前拍攝的照片。下面是我現在想要做的:將透明圖像添加到JLayeredPane
編輯:這是我的新代碼基於下面的答案 - 這現在什麼都不做,而不是像以前那樣添加不透明的圖像 - 如果我添加這個到一個JPanel,雖然和的JPanel添加到JLayeredPane的,然後我得到的是灰色
BufferedImage img2 = new BufferedImage(img.getWidth(), img.getHeight(), BufferedImage.TYPE_INT_ARGB);
Graphics2D g = img2.createGraphics();
g.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_OVER, .5f));
g.drawImage(img2, 0, 0, null);
g.dispose();
ImageIcon imgIcon = new ImageIcon(new ImageIcon(img2).getImage().getScaledInstance(img2.getWidth(), img2.getHeight(), Image.SCALE_SMOOTH));
JLabel showPic = new JLabel(imgIcon);
showPic.setSize(layers.getSize());
showPic.setBounds(layers.getX() + 18, layers.getY(), img2.getWidth(), img2.getHeight());
layers.add(showPic, new Integer(1)); //layers is my JLayeredPane
layers.repaint();
layers.revalidate();
IMG是我剛剛從我的攝像頭拍攝的畫面,我試圖使它半透明,然後將其添加到JLabel。我該如何做這項工作?還是有更好的方法來做到這一點?
明白了 - 只有現在,當我添加它,什麼也不顯示 - 除非我把它添加到一個JPanel,在這種情況下,(後我做panel.setBackground(新顏色(0,0,0,50))只有灰色顯示在屏幕上。JLayeredPane無法使上層透明並看到下面的圖層嗎? – dgamz
現在我注意到:您需要有另一個你不能在圖像上畫一個空的圖像(img2) - 攝像頭的圖像是什麼? – gpasch
來自攝像頭的圖像被稱爲img - 雖然我不想修改它,因爲我將它存儲在某處否則完好無損 - 我想製作一份img副本,然後製作此副本nsparent – dgamz