2010-10-17 4 views
2

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

Любые мысли?

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

ответ

5

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

Простите меня, если я что-то упустил, но ... вы * спали * на Диспетчере событий? – wchargin

3

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

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

Смежные вопросы