gpt4 book ai didi

java - JPanel 中的部分透明

转载 作者:行者123 更新时间:2023-12-01 11:16:18 24 4
gpt4 key购买 nike

我有一个内部有图像的框架,我想用我自己的组件(扩展 JComponent)选择该图像的一部分。现在看起来像这样:

enter image description here

但我希望它看起来像这样:

enter image description here

我怎样才能实现这个目标?

最佳答案

这实际上取决于您如何绘制组件。如果您使用的是 Graphics,则可以将其转换为 Graphics2D,然后可以 setPaint 或 setComposite 来获得透明效果。

import javax.swing.JFrame;
import javax.swing.JPanel;
import java.awt.*;

/**
* Created by odinsbane on 8/3/15.
*/
public class TransparentOverlay {

public static void main(String[] args){

JFrame frame = new JFrame("painting example");

JPanel panel = new JPanel(){

@Override
public void paintComponent(Graphics g){
Graphics2D g2d = (Graphics2D)g;
g2d.setPaint(Color.WHITE);
g2d.fill(new Rectangle(0, 0, 600, 600));
g2d.setPaint(Color.BLACK);
g2d.fillOval(0, 0, 600, 600);

g2d.setPaint(new Color(0f, 0f, 0.7f, 0.5f));
g2d.fillRect(400, 400, 200, 200);

g2d.setPaint(Color.GREEN);
g2d.setComposite(
AlphaComposite.getInstance(
AlphaComposite.SRC_OVER, 0.8f
)
);

g2d.fillRect(0,0,200, 200);
g2d.setPaint(Color.RED);
g2d.fillRect(400, 0, 200, 200);
}
};

frame.setContentPane(panel);
frame.setSize(600, 600);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);

}

}

使用设置的合成,之后的所有绘图都将具有相同的合成,直到您再次更改它。

关于java - JPanel 中的部分透明,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31791898/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com