代码之家  ›  专栏  ›  技术社区  ›  Michael Mao

如何淡入/淡出Java图形?

  •  2
  • Michael Mao  · 技术社区  · 14 年前

    假设我有一个Java图形对象,我想在它上面画一条线或一个矩形。当我发出绘制命令时,它立即出现在屏幕上。我只是想知道,作为淡入/淡出效果,我如何才能取得这个进展,就像您在JavaScript中可以实现的一样。

    有什么想法吗?

    感谢您的帮助和建议!

    3 回复  |  直到 14 年前
        1
  •  5
  •   dogbane    14 年前

    您可以尝试一次又一次地用不同的不透明度(alpha)值来绘制图像。从0(完全透明)开始,逐渐增加到1(不透明),以产生淡入效果。以下是一些可能有帮助的测试代码:

    float alpha = 0.0f;
    
    public void paint(Graphics g) {
        Graphics2D g2d = (Graphics2D) g;
    
        //set the opacity
        g2d.setComposite(AlphaComposite.getInstance(
                AlphaComposite.SRC_OVER, alpha));
        g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING,RenderingHints.VALUE_ANTIALIAS_ON);
    
        //do the drawing here
        g2d.drawLine(10, 10, 110, 110);
        g2d.drawRect(10, 10, 100, 100);
    
        //increase the opacity and repaint
        alpha += 0.05f;
        if (alpha >= 1.0f) {
            alpha = 1.0f;
        } else {
            repaint();
        }
    
        //sleep for a bit
        try {
            Thread.sleep(200);
        } catch (InterruptedException e) {
    
            e.printStackTrace();
        }
    }
    
        2
  •  3
  •   Andrew Thompson    14 年前

    看看 AlphaComposite 类的透明度和基于Swing的 Timer 计时类。

    这个 Java 2D API Sample Programs 有演示。在显示如何将它们连接在一起的复合标题下。

        3
  •  1
  •   Faisal Feroz    14 年前