2012-05-11 3 views
2

Используя «Аффинированное преобразование», я могу легко поворачивать imageA. Кроме того, imageA будет двигаться вместе с imageB. Тем не менее, я не могу найти способ переместить imageA в исходное положение после того, как я его повернул.Вращающееся изображение (возвращая его в исходное положение)

(я сделал некоторые исследования на некоторых сайтах и ​​по-видимому, лучший способ, чтобы переместить изображение в исходное положение, так что она выглядит как его вращающийся от точки привязки.)

Heres мой код до сих пор :

public void paintComponent(Graphics g) { 
    super.paintComponent(g); 
    AffineTransform af = new AffineTransform(); 
    Graphics2D g2d = (Graphics2D) g; 


    af.translate(imageBx, imageBy); // moves ImageA to imageb's position 
    af.rotate(Math.toRadians(angle), imageB.getHeight(this)/2, imageB.getWidth(this)/2); 


    g2d.drawImage(imageA, af, null); 
    g2d.drawImage(imageB, imageBx, imageBy, null); 
    } 

Если кто-то может помочь мне двигаться imageA обратно в исходное положение (которое прямо на imageB), что бы очень полезно!

+2

Посмотрите, помогает ли этот [пример] (http://stackoverflow.com/a/3420651/230513). – trashgod

+0

Я посмотрел на это, но код вращает всю панель, я просто хочу повернуть 1 Изображение (которое связано с другим, аналогичное танку и его руке) на фиксированной точке вращения. – Kenny

ответ

2

Я посмотрел на это, но code вращает всю панель; Я просто хочу повернуть один Image на фиксированную точку поворота.

Две вещи могут помочь направить ваше понимание:

  • example цитируется использует rotate(double theta); преф. перевод в начало и ... перевод денег центр. Обратите внимание, что операции выполняются в видимом обратном заявленном порядке. Ваш пример (возможно, должен был) вызвать rotate(double theta, double anchorx, double anchory). Эти два эффекта дают тот же результат, последний из которых является удобной альтернативой первому.

  • Этот example отличается тем, как можно преобразовать графический контекст (g2d) или само изображение. Ваш пример вызывает drawImage(Image img, AffineTransform xform, ImageObserver obs), который объединяет xform с существующим графическим преобразованием; это влияет на весь последующий рисунок. Может быть, проще их разделить.

+0

Спасибо, моя проблема решена – Kenny

Смежные вопросы