我正在制作一个游戏,其中一些物体旋转以面对他们正在拍摄的东西。在拍摄之间有一段延迟,我希望物体保持面对它直到它再次射击。我知道如何加载图像,我知道如何使用AffineTransform旋转它们。但是有了这个,我需要在每次绘制对象时计算旋转。
所以我的问题是如何旋转图像并将结果保存到一个可以显示的新图像中?
答案 0 :(得分:3)
如何旋转图像并将结果保存到将要显示的新图像中?
创建新的BufferedImage
。抓住Graphics
对象(通过BufferedImage.getGraphics()
。将旋转的图像绘制到此缓冲的图像上,并根据图像的旋转将图像保存在数组或地图中(以便于查找当你需要的时候)。
答案 1 :(得分:2)
Affline变换仅适用于完美的正方形。以下代码 用于拍摄任何矩形图像并正确旋转。去做 这选择了一个长度增加一半的中心点 欺骗图书馆认为图像是一个完美的正方形,然后它 旋转并告诉库在哪里找到正确的顶部 左点。每个方向的特殊情况发生在 不存在的额外图像位于左侧或顶部 图像被旋转。在这两种情况下,这一点都由 得到点的长边和短边的差异 图像的正确左上角。注意:x轴和y轴也是 与图像一起旋转,使宽度>总是调整高度 发生在y轴上并且高度>宽度调整 发生在x轴上。
<?php
$app->get('/', function () {
return 'Hello World';
});
$app->group(['prefix' => '/admin'], function () {
$app->get('/user', function () {
return 'Admin user';
});
});
答案 2 :(得分:1)
尝试这样的方法来克隆图像:
BufferedImage source = new BufferedImage(50, 10, BufferedImage.TYPE_4BYTE_ABGR);
BufferedImage target = new BufferedImage(50, 10, BufferedImage.TYPE_4BYTE_ABGR);
Graphics2D tg = target.createGraphics();
AffineTransform at = new AffineTransform();
at.rotate(2);
tg.drawImage(source, at, null);
P.S。:忽略我之前的回答,我误解了这个问题。遗憾。