2010-10-17 52 views
2

說如果我有一個Java圖形對象,並且我想在上面畫一條線或一個矩形。當我發出要繪製的命令時,它立即出現在屏幕上。我只是想知道如何將這一進展作爲淡入/淡出效果,與您在Javascript中實現的效果相同。如何淡入/淡出Java圖形?

有什麼想法?

非常感謝您的幫助和建議!

回答

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(); 
    } 
} 
+5

請原諒我,如果我失去了一些東西,但是......你是在睡眠*在事件調度線程? – wchargin 2013-03-29 21:07:13