Tag: transparency

如何为JTree单元设置透明背景?

伙计们, 我正在尝试创建一个渐变JTree控件。 除了树单元格的背景不透明外,以下代码大部分都有效。 如果有人打电话告诉我,我做得不对,我将不胜感激。 预先感谢您的帮助。 问候, 彼得 package TestPackage; import javax.swing.*; import javax.swing.tree.DefaultMutableTreeNode; import javax.swing.tree.DefaultTreeCellRenderer; import java.awt.*; public class Test { public Test() { JFrame frame = new JFrame(); JPanel framePanel = new JPanel(); framePanel.setLayout(new BorderLayout()); frame.setContentPane(framePanel); DefaultMutableTreeNode rootNode = new DefaultMutableTreeNode(“Item”); DefaultMutableTreeNode childNode = new DefaultMutableTreeNode(“Child”); rootNode.add(childNode); GradientTree tree = new GradientTree(rootNode); // JTree […]

如何使用透明填充缩放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不支持透明度。 咄。

如何在完全透明的JFrame上创建部分透明的JButton?

我能够使JFrame完全透明,JButton部分透明,直到我在按钮上移动鼠标(不要单击)并从按钮移开鼠标(通过MouseListener调用MouseExited)。 发生的事情是再次绘制JButton的背景,因此在按钮上打开和关闭几个鼠标后,按钮完全不透明。 public class ButtonExample extends JWindow { public ButtonExample( ) { JButton But = new JButton( “Testing” ); But.setBackground( new Color( 0, 0, 0, 200 ) ); But.setForeground( new Color( 70, 155, 255 ) ); this.add( But ); this.setBackground( new Color( 0, 0, 0, 0 ) ); this.setMinimumSize( new Dimension( 200,100 ) ); this.setVisible( […]

Java 7 JColorChooser:禁用透明度滑块

JDK 7为JColorChooser添加了一个新的透明度滑块: 问题是我不想让我的用户选择透明的颜色。 不幸的是,似乎没有一种简单的方法来禁用滑块。 摆脱透明度的一种方法是仅根据所选颜色创建一种新颜色,但删除alpha值。 然而,这给用户留下了错误的印象,因为滑块现在实际上什么都不做,我讨厌有一个无用的UI元素。 所以我的问题是,摆脱透明度滑块的最佳方法是什么? PS:IMO,他们只是添加滑块并使其成为默认行为,这很奇怪。 这可能会导致JDK 6程序中的许多错误,这些错误不希望颜色选择器返回带有alpha值的颜色。

如何在具有透明度的java BufferedImage中读取像素颜色

我正在读取BufferedImage中的像素颜色,如下所示: ….. InputStream is = new BufferedInputStream(conn.getInputStream()); BufferedImage image = ImageIO.read(is); int color = image.getRGB(x, y); int red = (colour & 0x00ff0000) >> 16; int green = (colour & 0x0000ff00) >> 8; int blue = colour & 0x000000ff; 现在这个工作正常,除了png的透明度。 我发现如果x,y指的是没有颜色的透明像素,我仍然会读取一种颜色,通常与图像中其他地方使用的颜色相同。 如何检测像素实际上是透明的而不是彩色的? 谢谢

Java:使用透明像素填充BufferedImage

我有一个屏幕外的BufferedImage,使用BufferedImage.TYPE_INT_ARGB类型构建。 它可以包含任何东西,我正在寻找一种方法(相当有效地)用透明像素完全覆盖图像,从而产生“隐形”图像。 使用这样的东西: (bufimg.getGraphics()).setColor(new Color(10, 10, 100, 0)); (bufimg.getGraphics()).fillRect (0, 0, x, y); 没有效果。 一种可能的方法可能只是写入BufferedImage中的每个像素,但我不确定这是最好的解决方案。 你会怎么做? [编辑] 图形文档建议不要将clearRect用于屏幕外图像,但我已尝试使用与上面相同的结果。 [EDIT2] 在尝试使用MeBigFatGuy的代码(谢谢!)后,它确实清除了图像。 但它也停止了对该图像的进一步绘画(或似乎)。 这段代码例如: BufferedImage img = new BufferedImage (600, 600, BufferedImage.TYPE_INT_ARGB); Graphics g = img.createGraphics () g.drawLine (100, 100, 500, 500); AlphaComposite composite = AlphaComposite.getInstance(AlphaComposite.CLEAR, 0.0f); g.setComposite(composite); g.setColor(new Color(0, 0, 0, 0)); g.fillRect(0, 0, 600, 600); […]

使用java将透明gif / png转换为jpeg

我想使用Java将gif图像转换为jpeg。 它适用于大多数图像,但我有一个简单的透明gif图像: 输入gif图像http://img292.imageshack.us/img292/2103/indexedtestal7.gif [如果图像丢失:它是一个蓝色圆圈,周围有透明像素] 当我使用以下代码转换此图像时: File file = new File(“indexed_test.gif”); BufferedImage image = ImageIO.read(file); File f = new File(“indexed_test.jpg”); ImageIO.write(image, “jpg”, f); 此代码可以在不抛出exception的情况下工作,但会导致无效的jpeg图像: 输出jpeg图像http://img297.imageshack.us/img297/3493/indexedtest1qe5.jpg [如果图像丢失:IE无法显示jpeg,Firefox会显示无效颜色的图像。] 我正在使用Java 1.5。 我还尝试使用gimp将示例gif转换为png并使用png作为Java代码的输入。 结果是一样的。 这是JDK中的错误吗? 如何在没有第三方库的情况下正确转换图像? 更新: 答案表明jpeg转换无法正确处理透明度(我仍然认为这是一个错误)并建议使用预定义颜色替换透明像素的解决方法。 这两种建议的方法都非常复杂,所以我实现了一个更简单的方法(将作为答案发布)。 我接受了第一个已发布的答案(Markus)。 我不知道哪种实现更好。 我选择最简单的一个,但我发现它不能正常工作。

如何在JavaFX中创建具有透明背景的Splash屏幕

我正在尝试创建一个类似于我提供的示例的启动画面。 似乎AnchorPane不允许透明背景,我尝试将AnchorPane的CSS设置为-fx-background-color: rgba(255,0,255,0.1) ; 但白色背景仍然显示出来。 我在fxml文件中的所有内容都是带有ImageView的AnchorPane,其中包含png图像 我到处寻找,但找不到任何解决方案,任何帮助将不胜感激。 谢谢