Я пытаюсь узнать, как исчезать и выводить изображения на другое изображение или с другого изображения. Итак, если у меня есть 2 изображения и 1 отображается в данный момент, я хочу отобразить другое изображение в фоновом режиме и выцветать первое изображение во втором изображении. ИЛИ, я хочу установить фокус на новом изображении и медленно угасать его по 1-му изображению, а затем перестать отображать первый.Java исчезает и исчезает из изображений
Я не уверен, как:
, чтобы установить фокус, если даже необходимо.
Я могу затухать, если я изменяю альфу на 0 и увеличиваю и рисую только одно изображение, однако я не могу заставить его исчезать либо с любым изменением этого кода. (т. е. комментируя одно изображение для рисования).
Редактировать: Действительно, все, о чем я беспокоюсь, может иметь 2 изображения и сделать изображение, отображаемое в данный момент, медленно исчезает во втором изображении. То, как это достигается, не обязательно должно быть с этим.
Вот пример кода я баловаться с:
import java.awt.AlphaComposite;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.Image;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.Timer;
public class FadeIn extends JPanel implements ActionListener {
private Image imagem;
private Image image2;
private Timer timer;
private float alpha = 1f;
public FadeIn() {
imagem = (new ImageIcon(getClass().getResource(
"/resources/1stImage.jpg"))).getImage();
image2 = (new ImageIcon(getClass().getResource(
"/resources/2ndImage.jpg"))).getImage();
timer = new Timer(20, this);
timer.start();
}
// here you define alpha 0f to 1f
public FadeIn(float alpha) {
imagem = (new ImageIcon(getClass().getResource(
"/resources/1stImage.jpg"))).getImage();
this.alpha = alpha;
}
@Override
public void paintComponent(Graphics g) {
super.paintComponent(g);
Graphics2D g2d = (Graphics2D) g;
g2d.drawImage(imagem, 0, 0, 400, 300, null);
g2d.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_OVER,
alpha));
g2d.drawImage(image2, 0, 0, 400, 300, null);
}
public static void main(String[] args) {
JFrame frame = new JFrame("Fade out");
frame.add(new FadeIn());
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(420, 330);
// frame.pack();
frame.setLocationRelativeTo(null);
frame.setVisible(true);
}
@Override
public void actionPerformed(ActionEvent e) {
alpha += -0.01f;
if (alpha <= 0) {
alpha = 0;
timer.stop();
}
repaint();
}
}
что вы имеете в виду под «SETFOCUS»? – MadProgrammer
В основном рисуем одно изображение в фоновом режиме, а другое перед ним. Затем вытрите верхнее изображение с помощью таймера. Вместо белого фона это будет нижнее изображение. Я смог сделать это, если просто заполнить прямоугольник на экране, но я не могу установить изображение в фоновом режиме. – user2079828