說如果我有一個Java圖形對象,並且我想在上面畫一條線或一個矩形。當我發出要繪製的命令時,它立即出現在屏幕上。我只是想知道如何將這一進展作爲淡入/淡出效果,與您在Javascript中實現的效果相同。如何淡入/淡出Java圖形?
有什麼想法?
非常感謝您的幫助和建議!
說如果我有一個Java圖形對象,並且我想在上面畫一條線或一個矩形。當我發出要繪製的命令時,它立即出現在屏幕上。我只是想知道如何將這一進展作爲淡入/淡出效果,與您在Javascript中實現的效果相同。如何淡入/淡出Java圖形?
有什麼想法?
非常感謝您的幫助和建議!
您可以嘗試一遍又一遍地繪製圖像,但使用不同的不透明度(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();
}
}
查看AlphaComposite類的透明度,以及基於Swing的Timer類進行計時。
該Java 2D API Sample Programs有演示。在綜合標題下顯示如何將它們聯繫在一起。
請原諒我,如果我失去了一些東西,但是......你是在睡眠*在事件調度線程? – wchargin 2013-03-29 21:07:13