Java-und ausblenden von Bildern

Ich versuche zu lernen, wie fade in und out Bilder in ein anderes Bild oder aus einem anderen Bild. Also, wenn ich 2 Bilder und 1 angezeigt wird, im moment möchte ich die Anzeige ein anderes Bild in den hintergrund und verblassen das erste Bild in der 2. Abbildung. ODER, ich möchte den Fokus auf das neue Bild und langsam verblassen im Laufe der 1. Bild, dann stoppen Sie die Anzeige der 1. ein.

Ich bin mir nicht sicher, wie Sie Sie:

  1. Fokus festlegen, wenn Sie sogar notwendig.
  2. Kann ich fade in, wenn ich die alpha auf 0 und die Schrittweite und ziehen nur ein Bild, aber ich kann es nicht ausblenden entweder mit Abweichungen von diesem Kodex. (d.h. auskommentieren ein Bild zu zeichnen).

Edit: Wirklich, alles was ich bin besorgt über Lage, 2 Bilder, und stellen Sie das Bild, das aktuell angezeigt wird, verschwindet langsam in das 2. Bild. Wie, was erreicht ist, nicht mit diesem.

Hier ist ein Codebeispiel, ich bin Herumspielen mit:

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();
    }
}
Was meinst du mit "setFocus"?
Im Grunde zeichnen Sie ein Bild in den hintergrund, und ein weiterer davor. Dann verblassen die top-Bild unter Verwendung der timer. Statt einem weißen hintergrund, es wäre das untere Bild. Ich habe in der Lage, es zu tun, wenn ich die füllen Sie einfach ein Rechteck auf dem Bildschirm, aber ich kann nicht das Bild in den hintergrund.

InformationsquelleAutor user2079828 | 2013-12-03

Schreibe einen Kommentar