Поворот изображения в java на указанный угол

Вот функция, которая рисует форму в заданных координатах:

public void drawTank(int x,int y){ int h = 50; int w = 50; graphic.setColor(Color.darkGray); graphic.drawRect(x, y, h, w); graphic.fillRect(x, y, h, w); graphic.setColor(Color.GRAY); graphic.drawRect(x+50, y+20, 35, 10); graphic.fillRect(x+50, y+20, 35, 10); } 

Я хочу добавить еще одну переменную к указанной выше функции под названием «угол», так что изображение также поворачивается на указанный угол (drawTank (int x, int y, int angle).

Обновлено с примером

То, что я пытался сделать, это то, что я инициализировал Graphics2D и изменил свой код соответственно:

 g2D.setColor(Color.darkGray); g2D.drawRect(x, y, h, w); g2D.fillRect(x, y, h, w); g2D.setColor(Color.red); g2D.drawRect(x+50, y+20, 35, 10); g2D.fillRect(x+50, y+20, 35, 10); g2D.rotate((Math.toRadians(angle))); 

Но это на самом деле ничего не делает. : /

Приоритет имеет значение …

Во втором примере вы применяете поворот ПОСЛЕ того, как вы нарисовали все. Это не то, как работает графика. Сначала нужно применить преобразование, затем все, что следует, будет использовать это преобразование.

введите описание изображения здесь

 public class TestRotateImage { public static void main(String[] args) { new TestRotateImage(); } public TestRotateImage() { EventQueue.invokeLater(new Runnable() { @Override public void run() { try { UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName()); } catch (Exception ex) { } JFrame frame = new JFrame("Test"); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.add(new TestPane()); frame.pack(); frame.setLocationRelativeTo(null); frame.setVisible(true); } }); } public class TestPane extends JPanel { private JSlider slider; private Rectangle rectangle; public TestPane() { setLayout(new BorderLayout()); rectangle = new Rectangle(0, 0, 100, 100); slider = new JSlider(); slider.setMinimum(0); slider.setMaximum(360); slider.setMinorTickSpacing(5); slider.setMajorTickSpacing(10); slider.setValue(0); add(slider, BorderLayout.SOUTH); slider.addChangeListener(new ChangeListener() { @Override public void stateChanged(ChangeEvent e) { repaint(); } }); } @Override public Dimension getPreferredSize() { return new Dimension(200, 200); } public double getAngle() { return Math.toRadians(slider.getValue()); } @Override protected void paintComponent(Graphics g) { super.paintComponent(g); Graphics2D g2d = (Graphics2D) g.create(); g2d.setColor(Color.RED); g2d.drawLine(getWidth() / 2, 0, getWidth() / 2, getHeight()); g2d.drawLine(0, getHeight() / 2, getWidth(), getHeight() / 2); g2d.setColor(Color.BLACK); int x = (getWidth() - rectangle.width) / 2; int y = (getHeight() - rectangle.height) / 2; AffineTransform at = new AffineTransform(); at.setToRotation(getAngle(), x + (rectangle.width / 2), y + (rectangle.height / 2)); at.translate(x, y); g2d.setTransform(at); g2d.draw(rectangle); g2d.dispose(); } } } 

Вы можете посмотреть, как преобразовать фигуры, текст и изображения для получения дополнительной информации

Вот способ грубой силы сделать это. Взгляните на Java.lang.Math и java.awt.Graphics (у вас уже есть экземпляр). С помощью этого вы можете использовать функцию draw polygon для вычисления точек вашего прямоугольника, что вы можете сделать, используя sin и cos функций в Java.lang.Math

Действительно, вам нужно было бы просто вычислить две точки таким образом, так как вашей отправной точкой была бы вершина 90 gradleусов, из которой вы могли бы вычислить две соседние координаты. Оттуда это просто вопрос сложения и вычитания с точками, которые у вас есть, и ваши значения измерения, чтобы получить последнюю точку котенка в исходной точке.

Я понял бы это для вас и напишу какой-нибудь примерный код, но тогда, что весело оставит вас?

  • Измените цвет текста одного ClickableSpan при нажатии, не затрагивая другие ClickableSpans в том же TextView
  • Преобразование Bitmap PixelFormats в C #
  • icons Bootstrap загружаются локально, но не в Интернете
  • Как реализовать галерею изображений в Gridview в Android?
  • Локальные папки в папке res?
  • Отображать изображение из базы данных в ASP.net с помощью C #
  • Тень тени для изображения PNG в CSS
  • Ленивые загрузки изображений в UITableViewCell
  • Странная проблема с памятью при загрузке изображения в объект Bitmap
  • Сглаживание зубчатого пути
  • Ориентация изображения - Android
  • Давайте будем гением компьютера.