【发布时间】:2014-09-23 22:31:13
【问题描述】:
我正在尝试使用 AffineTransform 旋转存储在 ImageIcon 中的动画 gif。结果是图像没有被绘制出来。
这是我的代码:
AffineTransform trans = AffineTransform.getRotateInstance(imgYaw, img.getImage().getWidth(null) / 2, img.getImage().getHeight(null) / 2);
AffineTransformOp transo = new AffineTransformOp(trans, AffineTransformOp.TYPE_BILINEAR);
BufferedImage bufferedimg = new BufferedImage(img.getImage().getWidth(null), img.getImage().getHeight(null), BufferedImage.TYPE_4BYTE_ABGR);
img.setImage(atransO.filter(bufferedimg, null));
img.paintIcon(null, g, x, y);
【问题讨论】:
-
为什么不直接将图像绘制到
Graphics上下文中,实际上,为什么不将转换应用到Graphics上下文中呢?对于example -
@MadProgrammer 因为如果我这样做,图像不会动画。
-
@MadProgrammer 如果您的意思是将paintIcon 替换为
g.drawImage(transO.filter(bufferedimg, null), x - (img.getImage().getWidth(null) / 2), y - (img.getImage().getWidth(null) / 2), null);,那么图像甚至不会被绘制。 -
我是正式的白痴。我忘了在缓冲图像上绘制图像。
-
我有一种有趣的感觉,有一种方法可以做......但我可能正在考虑其他事情......
标签: java animated-gif image-rotation affinetransform