我正在尝试在缩放图片时实现动画 - 即制作一些帧并使用计时器显示它们,因此看起来图片正在移动到缩放区域。问题是我不知道该怎么做。 这是一些代码。
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 :(得分:0)
当前图像大小的计算需要取决于动画的当前时间/进度。因此,如果您在计算中不使用currentFrame
,则大小将始终相同,并且您没有动画。
具体来说,你可能想要这样的东西随着时间的推移将图像从非常小的尺寸缩放到完整尺寸:
int newImageWidth = ((mandel.getWidth() - selection.width) * currentFrame/frames) ;
int newImageHeight = ((mandel.getHeight() - selection.height) * currentFrame/frames) ;