带有透明背景的屏幕截图
我创建了一个带有几个Jlabels的程序。他们每个人都显示一个具有透明背景的PNG文件。使用此代码,我可以叠加它们并进行屏幕截图,但也可以拍摄面板。 我该如何保持背景透明?
buildgui.java
JLabel labelFirst = new JLabel(new ImageIcon("img/first.png"));
labelFirst.setBounds(10, 10, 250, 190);
panelScreenshot.add(labelFirst);
JLabel labelSecond = new JLabel(new ImageIcon("img/second.png"));
labelSecond.setBounds(10, 10, 250, 190);
panelScreenshot.add(labelSecond);
JLabel labelThird = new JLabel(new ImageIcon("img/third.png"));
labelThird.setBounds(10, 10, 250, 190);
panelScreenshot.add(labelThird);
public void actionPerformed(ActionEvent e) {
if(e.getSource()==btnSave) {
classSave salvataggio = new classSave();
salvataggio.classSave(panelScreenshot);
}
}
classsave.java
public void classSave(Component component) {
Rectangle rect = component.getBounds();
try {
String dirName = ("Save/");
String timeStamp = new SimpleDateFormat("yyyy-MM-dd_HH-mm-ss").format(new Date());
String fileName = timeStamp + "." + "png";
File dir = new File (dirName);
boolean dirCreated = dir.mkdir();
if(dirCreated) {
System.out.println("The directory has been created.");
}
else {
System.out.println("The directory already exists.");
}
BufferedImage captureImage =
new BufferedImage(rect.width, rect.height,
BufferedImage.TYPE_INT_ARGB);
component.paint(captureImage.getGraphics());
ImageIO.write(captureImage, "png" , new File(dir, fileName));
System.out.println("The file was saved!");
} catch (IOException ex) {
System.err.println(ex);
}
}
I created a program with several JLabels. Each of them shows a png file with transparent background. With this code I can overlay them and take a screenshot, but the panel is also taken.
How can I do to keep the background transparent?
BuildGUI.java
JLabel labelFirst = new JLabel(new ImageIcon("img/first.png"));
labelFirst.setBounds(10, 10, 250, 190);
panelScreenshot.add(labelFirst);
JLabel labelSecond = new JLabel(new ImageIcon("img/second.png"));
labelSecond.setBounds(10, 10, 250, 190);
panelScreenshot.add(labelSecond);
JLabel labelThird = new JLabel(new ImageIcon("img/third.png"));
labelThird.setBounds(10, 10, 250, 190);
panelScreenshot.add(labelThird);
public void actionPerformed(ActionEvent e) {
if(e.getSource()==btnSave) {
classSave salvataggio = new classSave();
salvataggio.classSave(panelScreenshot);
}
}
classSave.java
public void classSave(Component component) {
Rectangle rect = component.getBounds();
try {
String dirName = ("Save/");
String timeStamp = new SimpleDateFormat("yyyy-MM-dd_HH-mm-ss").format(new Date());
String fileName = timeStamp + "." + "png";
File dir = new File (dirName);
boolean dirCreated = dir.mkdir();
if(dirCreated) {
System.out.println("The directory has been created.");
}
else {
System.out.println("The directory already exists.");
}
BufferedImage captureImage =
new BufferedImage(rect.width, rect.height,
BufferedImage.TYPE_INT_ARGB);
component.paint(captureImage.getGraphics());
ImageIO.write(captureImage, "png" , new File(dir, fileName));
System.out.println("The file was saved!");
} catch (IOException ex) {
System.err.println(ex);
}
}
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论