gpt4 book ai didi

java - 在 jpanel 中心旋转图像

转载 作者:行者123 更新时间:2023-12-01 13:43:16 25 4
gpt4 key购买 nike

如何在其中心轴和 jpanel 的中心旋转图像?我尝试使用此代码,但图像仅在 jpanel 左上角的中心枢轴上旋转,而不是在 jpanel 的中心旋转。任何帮助将不胜感激

public class aboutPanel extends javax.swing.JPanel {

Image img= new ImageIcon("ball.png").getImage();
Image ball[]=new Image[4];//result of cropping image
AffineTransform afft=new AffineTransform();
int degree=10;

public aboutPanel() {
initComponents();
for(int i=0;i<4;i++)//crop image to 4 ball
{
ball[i]=Toolkit.getDefaultToolkit().createImage(new FilteredImageSource(img.getSource(),new CropImageFilter(0,i*78,80,78)));
}
if(thr.isAlive()==false)
{
thr.start();//start thread
}

}

Thread thr= new Thread(new Runnable() {
@Override
public void run() {
while(true)
{
repaint();
try {
Thread.sleep(20);
} catch (InterruptedException ex) {
Logger.getLogger(aboutPanel.class.getName()).log(Level.SEVERE, null, ex);
}
}
}
});

@Override
public void paint(Graphics g) {
super.paint(g);
Graphics2D g2d=(Graphics2D)g;
afft.rotate(Math.toRadians(degree),ball[0].getWidth(this)/2,ball[0].getHeight(this)/2);
g2d.setTransform(afft);
g2d.drawImage(ball[0],0,0,this);
if(degree==360)
{
degree=0;
}
}

最佳答案

g2d.drawImage(ball[0],0,0,this);  

您正在位置 (0, 0) 绘制图像;

如果你想让它位于中心,那么你需要计算中心。例如宽度中心将类似于:

int widthCenter = (getWidth() - ball[0].getWidth(this)) / 2;

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

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