gpt4 book ai didi

java - 渲染旋转图像

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:24:06 26 4
gpt4 key购买 nike

为什么下面的代码没有以一定角度渲染图像。(我希望图像在图像上的 anchor 上呈现)。我认为它在屏幕上旋转。我该如何解决这个问题?

public void drawWeapon(Graphics2D g) {
int iconSize = main.SOutput.iconSize;
int ePosX =(int) (getPosX() * iconSize
- (int) main.player.getPosX() *iconSize)/iconSize;
int ePosY =(int) (getPosY() * iconSize
- (int) main.player.getPosY() *iconSize)/iconSize;

int PosX = ePosX + (main.SOutput.resX/2)*iconSize
+ main.SOutput.xPaddingSide;
int PosY = ePosY + (main.SOutput.resY/2)*iconSize
- getImageSizeY()*iconSize;

if (inventory[0][main.gui.itemSelected] != null){
g.rotate(facingLeft?scincePressed:-scincePressed);
g.drawImage(inventory[0][main.gui.itemSelected].item.getImage(),
PosX + (facingLeft?0:getImageSizeX() * iconSize/2), PosY +
(getImageSizeY() * iconSize/2), getImageSizeX() * iconSize/2,
getImageSizeY() * iconSize/3, null);
g.rotate(facingLeft?-scincePressed:scincePressed);
}
}

最佳答案

你应该使用这种工作方式:

  1. 推送矩阵
  2. 平移到旋转点
  3. 旋转
  4. 在 (0, 0) 处渲染
  5. 流行矩阵

在代码中,它将是:

AffineTransform matrix = g.getTransform();
g.translate(originX, originY);
g.rotate(angle);
g.drawImage(0, 0, ...);
g.setTransform(matrix);

你也可以试试 Graphics2D.rotate(theta, originX, originY);

关于java - 渲染旋转图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8372326/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com