在Java applet中淡入淡出效果

问题描述:

我正在制作带有节点和边缘的java applet图形。我想在点击一个节点时实现淡入淡出效果,但我不知道如何编写和实现代码。为了澄清,例如动物节点检索老虎和狮子节点。所以当点击动物时,节点和附着的边缘逐渐消失,老虎和狮子节点逐渐出现。在Java applet中淡入淡出效果

预先感谢您

+0

我假设你有线程知识?顺序淡出节点将是灾难性的! – AlanFoster 2011-05-29 03:22:36

+0

@userNNNN“在java applet中淡入淡出效果”将在applet中以与在应用程序中完成相同的方式完成。顺便说一句 - 你有问题吗? – 2011-05-29 03:54:59

你需要写一个动画循环。每次通过循环改变边缘和/或节点的颜色。您可以使用Alpha淡入淡出或淡入淡出来背景。如果您搜索“java小程序动画循环”,网上有很多教程。一篇好文章是here

+0

如果循环你的意思是一个计时器,那么是的。但是OP绝对不应该使用他/她自己的循环。 – MeBigFatGuy 2011-05-29 03:42:00

example使用AlphaComposite做衰落。或者,这个example根据饱和度组成一个颜色表。

Dear Friend here is the code that helps your problem 

Kindly refer through it 

/*Arpana*/ 

import java.awt.*; 
import java.awt.event.*; 
import java.awt.image.*; 
import javax.swing.*; 
import java.awt.color.ColorSpace; 
import javax.swing.border.TitledBorder; 


public class ImageColorEffect extends JFrame implements ActionListener { 
    DisplayPanel displayPanel; 
    JRadioButton brightButton, darkButton, contrastIButton, contrastDButton, 
    reverseButton, changeButton, resetButton; 

    public ImageColorEffect() { 
    super("Color Effect Example"); 
    Container container = getContentPane(); 
    container.setSize(500,500); 
    displayPanel = new DisplayPanel(); 
    container.add(displayPanel); 
    JPanel panel = new JPanel(); 
    panel.setLayout(new GridLayout(3, 2)); 
    panel.setBorder(new TitledBorder("Click a Radio Button")); 
    ButtonGroup group = new ButtonGroup(); 

    brightButton = new JRadioButton("Brightness",false); 
    panel.add(brightButton); 
    group.add(brightButton); 
    brightButton.addActionListener(this); 

    darkButton = new JRadioButton("Darkness",false); 
    panel.add(darkButton); 
    group.add(darkButton); 
    darkButton.addActionListener(this); 

    contrastIButton = new JRadioButton("Contrast in",false); 
    panel.add(contrastIButton); 
    group.add(contrastIButton); 
    contrastIButton.addActionListener(this); 

    contrastDButton = new JRadioButton("Contrast de",false); 
    panel.add(contrastDButton); 
    group.add(contrastDButton); 
    contrastDButton.addActionListener(this); 

    reverseButton = new JRadioButton("Negative",false); 
    panel.add(reverseButton); 
    group.add(reverseButton); 
    reverseButton.addActionListener(this); 

    changeButton = new JRadioButton("ChangeColor",false); 
    panel.add(changeButton); 
    group.add(changeButton); 
    changeButton.addActionListener(this); 

    resetButton = new JRadioButton("Reset",false); 
    panel.add(resetButton); 
    group.add(resetButton); 
    resetButton.addActionListener(this); 

    container.add(BorderLayout.NORTH, panel); 

    addWindowListener(new WindowEventHandler()); 
    setSize(displayPanel.getWidth(), displayPanel.getHeight() + 25); 
    show(); 
    } 
class WindowEventHandler extends WindowAdapter { 
    public void windowClosing(WindowEvent e) { 
    System.exit(0); 
    } 
    } 
public static void main(String arg[]) { 
    new ImageColorEffect(); 
    } 
public void actionPerformed(ActionEvent e) { 
    JRadioButton rbutton = (JRadioButton) e.getSource(); 
    if (rbutton.equals(brightButton)) { 
    displayPanel.brightenLUT(); 
    displayPanel.applyFilter(); 
    displayPanel.repaint(); 
    } else if (rbutton.equals(darkButton)) { 
    displayPanel.darkenLUT(); 
    displayPanel.applyFilter(); 
    displayPanel.repaint(); 
    } else if (rbutton.equals(contrastIButton)) { 
    displayPanel.contrastIncLUT(); 
    displayPanel.applyFilter(); 
    displayPanel.repaint(); 
    } else if (rbutton.equals(contrastDButton)) { 
    displayPanel.contrastDecLUT(); 
    displayPanel.applyFilter(); 
    displayPanel.repaint(); 
    } else if (rbutton.equals(reverseButton)) { 
    displayPanel.reverseLUT(); 
    displayPanel.applyFilter(); 
    displayPanel.repaint(); 
    } else if (rbutton.equals(changeButton)) { 
    displayPanel.repaint(); 
    displayPanel.grayOut(); 
    } else if (rbutton.equals(resetButton)) { 
    displayPanel.reset(); 
    displayPanel.repaint(); 
    } 
    } 
    } 
class DisplayPanel extends JPanel { 
    Image disImage; 
    BufferedImage image; 
    Graphics2D graph; 
    LookupTable lookup; 

    DisplayPanel() { 
    setBackground(Color.black); 
    loadImage(); 
    setSize(disImage.getWidth(this), disImage.getWidth(this)); 
    createBufferedImage(); 
    } 
public void loadImage() { 
    disImage = Toolkit.getDefaultToolkit().getImage(
    "Desert.jpg"); 
    MediaTracker media = new MediaTracker(this); 
    media.addImage(disImage, 1); 
    try { 
    media.waitForAll(); 
    } catch (Exception e) {} 

    if (disImage.getWidth(this) == -1) { 
    System.out.println("file not found"); 
    System.exit(0); 
    } 
    } 
public void createBufferedImage() { 
    image = new BufferedImage(disImage.getWidth(this), disImage 
    .getHeight(this), BufferedImage.TYPE_INT_ARGB); 

    graph = image.createGraphics(); 
    graph.drawImage(disImage, 0, 0, this); 
    } 
public void brightenLUT() { 
    short brighten[] = new short[256]; 
    for (int i = 0; i < 256; i++) { 
    short pixelValue = (short) (i + 10); 
    if (pixelValue > 255) 
    pixelValue = 255; 
    else if (pixelValue < 0) 
    pixelValue = 0; 
    brighten[i] = pixelValue; 
    } 
    lookup = new ShortLookupTable(0, brighten); 
    } 
public void darkenLUT() { 
    short brighten[] = new short[256]; 
    for (int i = 0; i < 256; i++) { 
    short pixelValue = (short) (i - 10); 
    if (pixelValue > 255) 
    pixelValue = 255; 
    else if (pixelValue < 0) 
    pixelValue = 0; 
    brighten[i] = pixelValue; 
    } 
    lookup = new ShortLookupTable(0, brighten); 
    } 
public void contrastIncLUT() { 
    short brighten[] = new short[256]; 
    for (int i = 0; i < 256; i++) { 
    short pixelValue = (short) (i * 1.2); 
    if (pixelValue > 255) 
    pixelValue = 255; 
    else if (pixelValue < 0) 
    pixelValue = 0; 
    brighten[i] = pixelValue; 
    } 
    lookup = new ShortLookupTable(0, brighten); 
    } 
public void contrastDecLUT() { 
    short brighten[] = new short[256]; 
    for (int i = 0; i < 256; i++) { 
    short pixelValue = (short) (i/1.2); 
    if (pixelValue > 255) 
    pixelValue = 255; 
    else if (pixelValue < 0) 
    pixelValue = 0; 
    brighten[i] = pixelValue; 
    } 
    lookup = new ShortLookupTable(0, brighten); 
    } 
public void reverseLUT() { 
    byte reverse[] = new byte[256]; 
    for (int i = 0; i < 256; i++) { 
    reverse[i] = (byte) (255 - i); 
    } 
    lookup = new ByteLookupTable(0, reverse); 
    } 
public void reset() { 
    graph.setColor(Color.black); 
    graph.clearRect(0, 0, image.getWidth(this), image.getHeight(this)); 
    graph.drawImage(disImage, 0, 0, this); 
    } 
    public void grayOut() { 
    ColorConvertOp colorConvert = new ColorConvertOp(ColorSpace 
    .getInstance(ColorSpace.CS_GRAY), null); 
    colorConvert.filter(image, image); 
    } 
public void applyFilter() { 
    LookupOp lop = new LookupOp(lookup, null); 
    lop.filter(image, image); 
    } 
public void update(Graphics g) { 
    g.clearRect(0, 0, getWidth(), getHeight()); 
    paintComponent(g); 
    } 
public void paintComponent(Graphics g) { 
    super.paintComponent(g); 
    Graphics2D g2D = (Graphics2D) g; 
    g2D.drawImage(image, 0, 0, this); 
    } 
}