Tag: alpha transparency

AlphaComposite.CLEAR无法正常工作

我在JLayeredpane上有两个JPanel。 其中一个显示pdf,重叠的一个有透明背景(我使用了setOpaque(false))。 现在我可以将图纸添加到透明面板,这样我似乎实际上是在注释pdf。 我想要一个橡皮擦工具来删除这些注释。 我尝试使用以下代码 @Override public void draw(Graphics2D g2) { g2.setPaint(Color.WHITE); g2.setComposite(AlphaComposite.getInstance(AlphaComposite.CLEAR)); g2.setBackground(new Color(255, 255, 255, 0)); g2.setStroke(new BasicStroke(thickness, BasicStroke.CAP_ROUND, BasicStroke.JOIN_ROUND)); g2.draw(path); } 其中path是由多行组成的形状。 现在,不是在先前的图纸上绘制透明线 ,而是绘制黑线 。 我哪里错了?

如何使用透明填充缩放Graphics2D图像

我正在尝试编写一个小方法,它采用BufferedImage图像和新的宽度和高度,并通过根据图像向左/右或上/下添加透明边框来缩放保持纵横比的图像。 缩放工作正常,但对于我的生活,我不能让边框透明。 到目前为止,我在pastebin.com上发布了以下代码 ,可以很好地进行扩展。 我阅读了很多手册和其他SO问题无济于事。 我已经尝试了许多填充,复合类型,图像类型等的排列。有时我得到一个蓝色背景,有时是白色但它似乎永远不会透明。 BufferedImage newImg = new BufferedImage(newWidth, newHeight, img.getType()); Graphics2D g = newImg.createGraphics(); g.setColor(Color.WHITE); g.fillRect(0, 0, newWidth, newHeight); g.drawImage(img, x, y, x + scaledWidth, y + scaledHeight, 0, 0, currentWidth, currentHeight, Color.WHITE, null); g.dispose(); return newImg; 知道我需要做什么Graphics2D才能使Color.WHITE背景透明并在新的上面绘制旧图像? 谢谢你的帮助。 编辑: 事实certificate,我遇到的问题是我试图用JPEG图像生成透明色。 JPEG不支持透明度。 咄。

使用一些透明度在Java中实现Cursor

我有35×40像素。 png图像我想在Swing应用程序中用作自定义光标。 图像具有发光,因此包含Alpha透明度值。 问题是当我尝试使用Toolkit生成自定义光标的传统方法时,我得到了alpha透明度值应该是黑色像素。 这是我用于游标的图像: https : //dl.dropbox.com/u/1186703/cursor.png 这是我的代码: public static void main(String[] args) throws IOException { new Sandbox().gui(); } private Cursor cursor; private Toolkit kit; private Image cursorImage; public void gui() { kit = Toolkit.getDefaultToolkit(); cursorImage = kit.createImage(getClass().getResource( “/aurora/V1/resources/cursor.png”)); cursor = Toolkit.getDefaultToolkit().createCustomCursor( cursorImage, new Point(0, 0), “CustomCursor”); setSize(800, 800); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); setLocationRelativeTo(null); setVisible(true); setCursor(cursor); } […]

JTextArea不可选,但仍显示“ghost”光标

我把一个JTextArea放在JPanel中。 这张JPanel背景上有一张图片,而JTextArea是半透明的(透明的红色)来显示背景。 我不希望用户能够编辑或选择文本,我希望它只是作为一个JLabel(但有多行,易于自动换行并调整到屏幕resize)。 我尝试了所有这些选项: text.setEditable(false); text.setFocusable(false); text.setEnabled(false); text.setHighlighter(null); 但是当用户将鼠标拖到JTextArea上时,仍会发生一些颜色变化。 谁知道发生了什么事?