Java 如何在此旋转变换后平移图像
下面的代码是用于绘制图像对象的paintComponent,但我希望能够旋转图像而不将其围绕中心向外移动,但也可以根据特定值进行平移Java 如何在此旋转变换后平移图像,java,graphics2d,Java,Graphics2d,下面的代码是用于绘制图像对象的paintComponent,但我希望能够旋转图像而不将其围绕中心向外移动,但也可以根据特定值进行平移 trans.translate(xShift, yShift); 这是我试图用来翻译我的图像的一条线,但由于某种原因,它每次都会切断图像的一部分 protected void paintComponent(Graphics g) { super.paintComponent(g); if
trans.translate(xShift, yShift);
这是我试图用来翻译我的图像的一条线,但由于某种原因,它每次都会切断图像的一部分
protected void paintComponent(Graphics g) {
super.paintComponent(g);
if (myImage != null) {
AffineTransform trans = new AffineTransform();
trans.translate(getWidth() / 2, getHeight() / 2);
trans.rotate(piece.getOrientation() * Math.PI / 2);
trans.translate(-myImage.getWidth() / 2, -myImage.getHeight() / 2);
trans.translate(xShift, yShift);
Graphics2D g2d = (Graphics2D) g;
g2d.drawImage(myImage, trans, null);
}
}
我的感觉是java在复合转换方面存在问题 也许您可以找到另一种方法:例如,变换图像本身,然后应用简单的翻译:
BufferedImage b22=new BufferedImage(getWidth(), getHeight(), BufferedImage.TYPE_INT_ARGB);
Graphics2D g2=(Graphics2D)b22.getGraphics();
AffineTransform trans = new AffineTransform();
trans.translate(getWidth() / 2, getHeight() / 2);
trans.rotate(Math.PI / 2);
trans.translate(-bim.getWidth() / 2, -bim.getHeight() / 2);
g2.drawImage(bim, trans, null);
AffineTransform trans2 = new AffineTransform();
trans2.translate(xoffset, yoffset);
Graphics2D g2d = (Graphics2D) g;
g2d.drawImage(b22, trans2, null);
// or just g2d.drawImage(b22, xoffset, yoffset, null);
当然,如果你把它翻译成某种程度,它会被切掉的