回答
實現模糊和其他圖像過濾效果相當簡單。
例如,要在一個BufferedImage
執行模糊,可以使用ConvolveOp
與一個Kernel
指定的卷積矩陣:
BufferedImageOp op = new ConvolveOp(new Kernel(3, 3,
new float[] {
1/9f, 1/9f, 1/9f,
1/9f, 1/9f, 1/9f,
1/9f, 1/9f, 1/9f
}
));
BufferedImage resultImg = op.filter(originalImg, resultImage);
不太清楚,需要模糊效應時,但它可能會方便一些。但我認爲這是一個易於實施的低成果。
以下是關於convolution matrices的一些信息。它可以用來實現銳化,浮雕,邊緣增強等效果。
執行像素化效果是BufferedImage
上的低掛水果操作。
這可以在兩個步驟中進行:
- 確定像素化的一個塊的顏色。
- 填寫圖像上的像素塊。
步驟1:確定的顏色:
public static Color determineColor(BufferedImage img, int x, int y, int w, int h) {
int cx = x + (int)(w/2);
int cy = y + (int)(h/2);
return new Color(img.getRGB(cx, cy), true);
}
在determineColor
方法中,從BufferedImage
的中心的像素的顏色被確定,並且被傳遞迴給調用者。
第2步:填寫與確定的顏色像素化塊:
BufferedImage sourceImg = ...; // Source Image.
BufferedImage destimg = ...; // Destination Image.
Graphics g = destImg.createGraphics();
int blockSize = 8;
for (int i = 0; i < sourceImg.getWidth(); i += blockSize) {
for (int j = 0; j < sourceImg.getHeight(); j += blockSize) {
Color c = determineColor(sourceImg, i, j, blockSize, blockSize);
g.setColor(c);
g.fillRect(i, j, blockSize, blockSize);
}
}
g.dispose();
雖然有相當多的代碼,這種影響是智力低掛水果 - 沒有太多的複雜,正在進行。它基本上是找到一個塊的中心顏色,並用該顏色填充一個框。這是一個相當天真的實現,所以可能有更好的方法來做到這一點。
下面是一個前和執行上述的像素化效應的對比:
Non-pixelated image http://coobird.net/img/grad64.pngPixelated image http://coobird.net/img/grad64p.png
透明度效果(例如煙霧)可以有很大的差異沒有太多精力。不知道這是否可以在Java2d中完成。
Filthy Rich Clients詳細描述了許多非常不錯的Java2D/Swing效果。它也給這些影響提供了極好的理論背景。我不確定有多少低窪水果,但它是瀏覽的好資源。
一種可能性可能是用alpha合成做些事情。也許結合alpha複合與Timing Framework。根據遊戲規則,對於遊戲玩法而言,選擇性和時間依賴性地使對象變爲半透明可能甚至是非常重要的。
任何看起來很現實的東西,從其他東西反彈的東西,滾落等都可能會很酷,如果您的遊戲是側面滾動2D而不是自上而下的2D,您可能可以使用準備好像Box2D這樣的物理引擎,只需很少的努力就可以做一些很酷的事情。這裏是你可以使用它的a Java port of Box2D。
- 1. 「低級」3D圖形編程
- 2. 瞭解低級圖形編程
- 3. Windows低級圖形
- 4. 懸停的水印圖像
- 5. C++圖形編程
- 6. 分享水果相當(動態編程)
- 7. 水平條形圖
- 8. Android圖形:低性能
- 9. 黑莓低級圖形
- 10. 低級C++圖形庫
- 11. 低級TCP編程
- 12. 低級GUI編程
- 13. X11圖形編程字體
- 14. R在圖形上編程
- 15. 圖形編程語言
- 16. 編程圖形工具鏈
- 17. R編程圖形命令
- 18. 柱形圖懸停文本
- 19. 圖形編輯器編程挑戰
- 20. 懸停效果當懸停圖像
- 21. 水平條形圖標籤
- 22. d3.js水條形圖
- 23. Qt:3D水平條形圖
- 24. D3水平條形圖
- 25. morris.js水平條形圖
- 26. 水平顯示條形圖
- 27. ggplot2的水平條形圖
- 28. C++中的圖形編碼效率低下
- 29. win32程序集編程圖形卡
- 30. 圓形按鈕懸停效果
運動模糊可以在2D中看起來非常漂亮,而且非常容易實現。 – shoosh 2009-06-10 15:05:19
謝謝,我會用它! 還有更多你知道的效果嗎? – 2009-06-10 20:10:28