课题研究中应用到要生成透明背景的电子签章,所以通过网上搜寻资料以及自己整合最终实现了这项功能。实现图如下:
关键代码如下:
1.在生成panel时,设置为透明
DrawPanel panel = new DrawPanel();
//DrawPanel继承swing中的Panel,具体实现不影响最后的结果
panel.setBackground(Color.WHITE); //先加个背景颜色
panel.setOpaque(false); //把panel的背景色设为透明
一般这样设置后,会默认去除原来panel的背景色(如白色),但是在生成为图片得时候,会把背景补为灰色(可能是默认的背景色),所以没有达到效果。
2.在上述步骤之上,再借助一个AWTUtilities类(自己下载好jar包),就可以实现上述功能了
DrawFrame frame = new DrawFrame(); //DrawFrame继承swing中的Frame,具体实现不影响最后的结果
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setUndecorated(true); // 设置窗口为无标题
com.sun.awt.AWTUtilities.setWindowOpaque(frame, false);// 设置窗体透明
//com.sun.awt.AWTUtilities.setWindowOpacity(frame, 0.3f);//或者也可以自定义设置整个窗体的透明度(上一行代码等价于第二个参数设置为0f的情况)
frame.setVisible(true);
上述代码即可实现panel的背景透明,保存后的图片也是透明的,遇到问题后可以向我询问
本文介绍了一种生成带有透明背景的电子签章的方法。通过调整Swing组件的透明属性并利用AWTUtilities类,成功实现了签章图片的背景透明化。
1219

被折叠的 条评论
为什么被折叠?



