KeleQAQ 2019-11-06 23:24 采纳率: 0%
浏览 421

JAVA怎么让图片翻转?

我想点击按钮就让图片翻转。可是只能翻转一次是怎么回事////


这里点按钮只能翻转一次,然后再点就不变了

图片说明

代码



public class My4 extends JFrame{

    public My4() {

        setVisible(true);
        setBounds(0, 100, 500, 400);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setTitle("图像翻转");
        add(new MyPanels());
        validate();
    }
    //-------------------------------------------------------------
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        new My4();
    }

}

class MyPanels extends JPanel implements ActionListener{
    private int w;//图片长度
    private int h;//图片宽

    BufferedImage image;
    JButton button1;
    Graphics2D g2;
    boolean change=false;

    public MyPanels() {

        button1=new JButton("翻转");
        add(button1);
        button1.addActionListener(this);

        try {
            image=ImageIO.read(new File("D:\\素材\\恐龙1.png"));
            w=image.getWidth();
            h=image.getHeight();

        } catch (IOException e) {

            e.printStackTrace();
        }
    }
    @Override
    public void paint(Graphics g) {
        // TODO Auto-generated method stub
        int t=1;
        super.paint(g);
        g2=(Graphics2D) g;


        if(!change) {
            g2.drawImage(image, 30, 30, w, h, this);
        }
        //shx:水平方向的倾斜量; shy:垂直方向的倾斜量。
        //p.shear(0.3, 0);
        //g2.drawImage(image, p, this);

        //图像向X轴移动10px,Y轴移动50px
        //tr.translate(40, 50);
        //旋转30度
        //tr.rotate(30*3.14159/180);


        //System.out.println(change);
        else {
        //是这里有问题吗

            System.out.println("改");
            AffineTransform p = new AffineTransform();
            p.scale(-1,1);     //向反反向缩放-1
            p.translate(-(w+60), 0);
            g2.setTransform(p);
            g2.drawImage(image, 30, 30, w, h, this);

        }

    }
    //实现接口
    @Override
    public void actionPerformed(ActionEvent e) {
        if(e.getSource()==button1) {
            change=true;
            repaint();

        }

    }


}


  • 写回答

1条回答 默认 最新

  • 毕小宝 博客专家认证 2019-11-07 09:20
    关注

    用一个 isCanRotate =true 表示,点击事件中根据该标识判断是否需要翻转,第一次触发翻转后修正标识为 flase ,以后就不再翻转》

    if(isCanRotate){
      //翻转
        isCanRotate = false;
    }else{
      //不翻转
        return;
    }
    
    评论

报告相同问题?

悬赏问题

  • ¥15 树莓派与pix飞控通信
  • ¥15 自动转发微信群信息到另外一个微信群
  • ¥15 outlook无法配置成功
  • ¥30 这是哪个作者做的宝宝起名网站
  • ¥60 版本过低apk如何修改可以兼容新的安卓系统
  • ¥25 由IPR导致的DRIVER_POWER_STATE_FAILURE蓝屏
  • ¥50 有数据,怎么建立模型求影响全要素生产率的因素
  • ¥50 有数据,怎么用matlab求全要素生产率
  • ¥15 TI的insta-spin例程
  • ¥15 完成下列问题完成下列问题