加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

Java 2d方向鼠标点旋转

发布时间:2020-12-15 07:37:54 所属栏目:Java 来源:网络整理
导读:到目前为止,我有一个 java应用程序,我绘制一个圆(播放器),然后在顶部(枪管)绘制一个绿色矩形.我有它,所以当玩家移动时,枪管随之而来.我想让它找到鼠标指向的位置,然后相应地旋转桶.有关我的意思的一个例子,看看这个视频,我发现 http://www.youtube.com/watch
到目前为止,我有一个 java应用程序,我绘制一个圆(播放器),然后在顶部(枪管)绘制一个绿色矩形.我有它,所以当玩家移动时,枪管随之而来.我想让它找到鼠标指向的位置,然后相应地旋转桶.有关我的意思的一个例子,看看这个视频,我发现 http://www.youtube.com/watch?v=8W7WSkQq5SU看看玩家图像在移动鼠标时的反应如何?

这是目前为止游戏的样子:

那我怎么像这样旋转呢?顺便说一句我不喜欢使用affinetransform或Graphics2D旋转.我希望有更好的方法.谢谢

解决方法

使用Graphics2D旋转方法确实是最简单的方法.这是一个简单的实现:

int centerX = width / 2;
int centerY = height / 2;
double angle = Math.atan2(centerY - mouseY,centerX - mouseX) - Math.PI / 2;

((Graphics2D)g).rotate(angle,centerX,centerY);

g.fillRect(...); // draw your rectangle

如果要在完成后移除旋转,以便可以继续正常绘制,请使用:

Graphics2D g2d = (Graphics2D)g;
AffineTransform transform = g2d.getTransform();

g2d.rotate(angle,centerY);

g2d.fillRect(...); // draw your rectangle

g2d.setTransform(transform);

无论如何只使用Graphics2D进行抗锯齿等等是个好主意.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读