来自this answer,可以在正常的java.awt.Window上绘制动画图像,就像这样:
import java.awt.AWTException;
import java.awt.Color;
import java.awt.Graphics;
import java.awt.Window;
import java.io.IOException;
import java.net.URL;
import javax.swing.ImageIcon;
public static void main(String[] args) throws AWTException, IOException {
Window w = new Window(null) {
@Override
public void paint(Graphics g) {
super.paint(g);
try {
java.awt.Image icon = new ImageIcon(new URL("http://i.stack.imgur.com/KSnus.gif")).getImage();
g.drawImage(icon, 500, 500, this);
g.drawRect(100, 100, 100, 100);
} catch (Exception e) {
e.printStackTrace();
}
}
@Override
public void update(Graphics g) {
paint(g);
}
};
w.setBounds(w.getGraphicsConfiguration().getBounds());
// w.setBackground(new Color(0, true));
w.setVisible(true);
}
此代码块取自here,并由第一个主题的图像作了补充。
我的目标是在屏幕顶部绘制动画GIF。但是一旦取消注释行w.setBackground(new Color(0, true));
以便使窗口透明,就不再显示GIF。如果我绘制矩形或其他形状,即使在透明窗口中也可以正常工作。
我有什么理由想念我吗?任何建议都会很棒:)
重要:这个问题与透明GIF无关,不是,是透明的java.awt.Window。