因此,我制作了一个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