2015-03-13 100 views
1

我想在縮放圖片時實現動畫 - 也就是製作一些幀並使用計時器顯示它們,以便看起來圖片正在縮放到縮放區域。事情是,我沒有任何想法如何去做。 這是一些代碼。動畫縮放im圖片

if (e.getSource() == timer) { 
      currentFrame++; 
      int newImageWidth = ((mandel.getWidth() - selection.width)/frames) ; 
      int newImageHeight = ((mandel.getHeight() - selection.height)/frames) ; 
      BufferedImage resizedImage = new BufferedImage(newImageWidth , newImageHeight, BufferedImage.TYPE_INT_RGB); 
      Graphics2D g = resizedImage.createGraphics(); 
      g.scale(newImageWidth, newImageHeight); 
      g.drawImage(mandelImage, 0, 0, mandel.getWidth(), mandel.getHeight(), null); 
      g.dispose(); 
      mandelImage = resizedImage;//mandelimage is the original picture 

      mandel.repaint();//the panel where is the picture 

      if (currentFrame >= frames) { 

       timer.stop(); 
       recreate();//the final result on the zoom 

      } 
+0

你運行它的具體問題?或者你不知道如何開始? – Bono 2015-03-13 13:57:54

+0

嗯,我找不到適當的教程。目前它正在左上角形成一個小矩形,其餘的面板都是白色的,並顯示dinal圖像。 – Nikola 2015-03-13 14:00:14

+0

當問一個問題時,你應該添加這樣的重要信息,比如什麼問題沒有解決。這將幫助您更快地獲得更好的答案。 – 2015-03-14 09:52:05

回答

0

當前圖像大小的計算需要取決於當前動畫的時間/進度。因此,如果您在計算中不使用currentFrame,大小將始終相同,並且您沒有動畫。

具體來說,你可能想是這樣的,從很小的圖像隨着時間的推移擴展到全尺寸:

int newImageWidth = ((mandel.getWidth() - selection.width) * currentFrame/frames) ; 
int newImageHeight = ((mandel.getHeight() - selection.height) * currentFrame/frames) ;