Поворот изображения с помощью AffineTransform
У меня есть класс под названиемAirplane
, Внутри этого класса у меня есть переменнаяimg
который являетсяBufferedImage
тип. Более того, у меня есть классWorldMap
которая переопределяет функцию:paintComponent(Graphics g)
@Override
public void paintComponent(Graphics g) {
Graphics2D g2d = (Graphics2D) g;
g2d.drawImage(mapa, 0, 0, getWidth(), getHeight(), null);
drawAirplanes(g2d);
}
функцияdrawAirplanes()
выглядеть так:
private void drawAirplane(Graphics2D g){
for(Samolot i: s){
i.rotateAirplane();
g.drawImage(i.getImg(),i.getX(),i.getY(),(int)i.getDim().getWidth(),(int)i.getDim().getHeight(), null);
}
}
Для этого просто нужно 1) повернуть самолет (BufferedImage внутри объекта Airplane) 2) нарисовать его.
Моя функция Airplane.rotateAirplane () выглядит следующим образом:
public void rotateSamolot() {
AffineTransform tx = new AffineTransform();
tx.translate(10,10); //10, 10 is height and width of img divide by 2
tx.rotate(Math.PI / 2);
tx.translate(-10,-10);
AffineTransformOp op = new AffineTransformOp(tx, AffineTransformOp.TYPE_BILINEAR);
BufferedImage newImage =new BufferedImage(20, 20, img.getType()); //20, 20 is a height and width of img ofc
op.filter(img, newImage);
this.img = newImage;
}
ofc, когда я запускаю только мою программуmapa
Объект нарисован. когда я удаляю эту полосу
this.img = newImage;
Я тоже получил свой самолет, но не вращался.