如何淡入/淡出Java图形?

Mic*_*Mao 2 java graphics animation effects

假设我有一个Java Graphics对象,我想在其上绘制一条线或一个矩形.当我发出绘制命令时,它立即出现在屏幕上.我只是想知道如何将这个进步作为淡入/淡出效果,就像你在Javascript中可以实现的那样.

有什么想法吗?

非常感谢您提前提供的帮助和建议!

dog*_*ane 5

您可以尝试反复绘制图像,但使用不同的不透明度(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();
    }
}
Run Code Online (Sandbox Code Playgroud)

  • 如果我错过了什么,请原谅我,但是......你在事件派遣线程上睡觉了吗? (5认同)