Как добавить / исчезнуть графику Java? - PullRequest
2 голосов
/ 17 октября 2010

Скажите, если у меня есть объект Java Graphics, и я хочу нарисовать на нем линию или прямоугольник. Когда я даю команду рисовать, она сразу появляется на экране. Мне просто интересно, как я могу добиться этого прогресса как эффекта постепенного исчезновения / затухания, такого же, как вы можете достичь в Javascript.

Есть мысли?

Большое спасибо за помощь и предложения заранее!

Ответы [ 3 ]

5 голосов
/ 17 октября 2010

Вы можете попробовать рисовать изображение снова и снова, но с другим значением непрозрачности (альфа). Начните с 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();
    }
}
3 голосов
/ 17 октября 2010

Посмотрите класс AlphaComposite для прозрачности и класс Timer на основе Swing для синхронизации.

Образцы программ Java 2D API имеют демонстрационные версии. под заголовком Composite, показывающим, как их связать.

1 голос
/ 17 октября 2010

Взгляните на Java Timing Framework .

...