记得有不少人质疑java透明方面的能力,也有很多人到处找怎么让java做出半透明效果,今天闲来无事写来晒晒。
为了创建透明组件,首先需要重写组件的paintComponent(Graphics)函数, @Override public void paintComponent(Graphics g) { Graphics2D g2d = (Graphics2D) g; g2d.setComposite(AlphaComposite.getInstance(AlphaC omposite.SRC_OVER, 0.3f)); //需要渲染的代码 g2d.setComposite(AlphaComposite.getInstance(AlphaC omposite.SRC_OVER, 1.0f)); } AlphaComposite 类中的 getInstance(int rule, float alpha)方法的第一个参数为合成规则,这个可以查找这个类的API中的静态变量,第二个参数为float型的alpha值,取值为0-1。
需要注意的是千万要记得在需要透明处理的代码后面将alpha改回1也就是不透明,要不然就悲剧了,那些渲染优先级低于这个组件的部分就全变成透明处理的了。
为了创建透明组件,首先需要重写组件的paintComponent(Graphics)函数, @Override public void paintComponent(Graphics g) { Graphics2D g2d = (Graphics2D) g; g2d.setComposite(AlphaComposite.getInstance(AlphaC omposite.SRC_OVER, 0.3f)); //需要渲染的代码 g2d.setComposite(AlphaComposite.getInstance(AlphaC omposite.SRC_OVER, 1.0f)); } AlphaComposite 类中的 getInstance(int rule, float alpha)方法的第一个参数为合成规则,这个可以查找这个类的API中的静态变量,第二个参数为float型的alpha值,取值为0-1。
需要注意的是千万要记得在需要透明处理的代码后面将alpha改回1也就是不透明,要不然就悲剧了,那些渲染优先级低于这个组件的部分就全变成透明处理的了。