2013-07-18 3 views
-1

Как мне заставить изображение затухать, а потом? Я знаю, что простой способ сделать это - просто сделать несколько изображений с разными непрозрачностью.Создание изображения исчезают и исчезают?

+0

Что ты рисуешь в? JPanel? Если вы делаете что-то в Интернете, я предлагаю вам посмотреть сообщение @Paul Bailey, если нет, вам понадобится другой ответ. – sparks

ответ

0

Управлять альфа-значением с помощью deltaTime. Таким образом, за определенный период времени вы можете исчезать и исчезать.

Чтобы исчезнуть, вы можете запустить alphaValue с 1 и в каждом вызове рендера вычесть .1 до тех пор, пока он не достигнет 0. Для затухания, начинайте с 0 и в каждом вызове рендера добавьте .1 в альфа-значение до тех пор, пока оно не достигнет 1 .

4

Используйте AlphaComposite при рисовании изображения:

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 { 

    Image imagem; 
    Timer timer; 
    private float alpha = 0f; 

    public FadeIn() { 
     imagem = new ImageIcon("???.jpg").getImage(); 
     timer = new Timer(100, this); 
     timer.start(); 
    } 
// here you define alpha 0f to 1f 
    public FadeIn(float alpha) { 
     imagem = new ImageIcon("???.jpg").getImage(); 
     this.alpha = alpha; 

    } 
    public void paintComponent(Graphics g) { 
     super.paintComponent(g); 

     Graphics2D g2d = (Graphics2D) g; 

     g2d.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_OVER, 
                alpha)); 
     g2d.drawImage(imagem, 0, 0, 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); 
    } 


    public void actionPerformed(ActionEvent e) { 
     alpha += 0.05f; 
     if (alpha >1) { 
      alpha = 1; 
      timer.stop(); 
     } 
     repaint(); 
    } 
} 
Смежные вопросы