Java实现图片透明效果,从演示截图可看到,上层图片与下层图片互相重叠,也就是上层图片透明了,看到了下层以的图片,具体的代码实现:
public class HalfTransparentImageDemo extends JFrame {
private Container content = getContentPane(); //获得窗口的容器
private JSlider jSlider = new JSlider(JSlider.HORIZONTAL,0,100,75); //改变图像的透明度
DisplayPanel displayPanel = new DisplayPanel(); //显示图形面板
public HalfTransparentImageDemo() {
super("半透明图片"); //调用父类构造器
jSlider.setPaintTicks(true); //绘制标志位
jSlider.setMajorTickSpacing(25); //设置标志尺寸
jSlider.setMinorTickSpacing(5);
jSlider.setPaintLabels(true); //绘制出数字
jSlider.setBorder(new TitledBorder(BorderFactory.createEmptyBorder(), "图像的透明度(%)")); //设置边框
jSlider.addChangeListener(new ChangeListener() { //滑动条jSlider事件处理
public void stateChanged(ChangeEvent ce) {
float alpha =((float) ((JSlider) ce.getSource()).getValue()) / 100;
displayPanel.alpha = alpha; //改变图像的透明度
displayPanel.repaint(); //重绘displayPanel
}
g2d.drawImage(bufImage1, 0, 0, this); //在图形环境绘制缓冲区图像1
g2d.drawString("Destination",5,20); //绘制文字
int compositeRule = AlphaComposite.SRC_OVER; //源排斥目标法合成规则
AlphaComposite alphaComposite=AlphaComposite.getInstance(compositeRule,alpha); //创建AlphaComposite对象
g2d.setComposite(alphaComposite); //设置图形环境的合成方式
g2d.drawImage(bufImage2, 0, 0, this); //在图形环境绘制缓冲区图像2
g2d.drawString("Source",150,20); //绘制文字
}