当前位置: 首页 > 知识库问答 >
问题:

以指定角度旋转java中的图像

伍弘盛
2023-03-14
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);
}
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)));

共有1个答案

卢阳成
2023-03-14

优先级很重要...

在第二个示例中,在绘制完所有内容后应用一个旋转。这不是图形的工作方式。您需要首先应用转换,然后后面的所有内容都将使用该转换。

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实现图片无损任意角度旋转,包括了java实现图片无损任意角度旋转的使用技巧和注意事项,需要的朋友参考一下 前言 在做项目的时候遇到一个业务需要对图片进行旋转,于是找到一个工具类,亲测有效;在此与大家共享,需要用时可以直接用哈! 实战 一、旋转工具类代码: 二、调用工具类的代码: 三、效果 1、被旋转的图片: 2、顺时针旋转90度图片: 3、顺时针旋转180度图片: 4、顺时针

  • 我正在使用平铺地图编辑器创建一个简单的平铺地图。在我的地图中,我有几个矩形,如果我创建一个宽度为50,高度为10的矩形,并将其旋转正好90°,保存地图并将其加载到我的LibGDX项目中,形状会正确呈现——但是如果我使用随机角度,例如26°,然后我再次渲染地图,我没有得到所需的结果,事实上我得到了完全相反的所需角度。 我使用以下方法直接从地图读取平铺地图浮动: 数学。degRad将直接从地图属性读取

  • 本文向大家介绍java实现图片角度旋转并获得图片信息,包括了java实现图片角度旋转并获得图片信息的使用技巧和注意事项,需要的朋友参考一下 本文实例为大家分享了java实现图片角度旋转并获得图片信息的具体代码,供大家参考,具体内容如下 获得图片使用metadata-extractor 以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持呐喊教程。

  • 本文向大家介绍Java实现图片旋转、指定图像大小和水平翻转,包括了Java实现图片旋转、指定图像大小和水平翻转的使用技巧和注意事项,需要的朋友参考一下 本文实例为大家分享了Java实现图片旋转、指定图像大小、水平翻转,供大家参考,具体内容如下 以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持呐喊教程。

  • 问题内容: 我需要能够单独旋转图像(在Java中)。到目前为止,我发现的唯一东西是g2d.drawImage(image,affinetransform,ImageObserver)。不幸的是,我需要在特定点绘制图像,并且没有一种方法带有参数1.分别旋转图像和2.允许我设置x和y。任何帮助表示赞赏 问题答案: 这就是你可以做到的。这段代码假设存在一个名为“ image”的缓冲图像(如你的评论所说)

  • 问题内容: 我有一个512x512像素的2D图像,我想在某个原点(旋转中心)以某个角度旋转。一直以来,我都使用Scipy的旋转方法来旋转图像。但是,我迷迷糊糊,因为旋转始终围绕图像的中心进行。对于512x512像素,旋转中心应围绕点(x,y)128,128。如何使用自定义旋转中心旋转图像,比方说(x,y)20,128? 问题答案: 如果不能使用OpenCV,则可以使用NumPy()和SciPy()