Java中实现图片的旋转功能

Java中实现图片的旋转功能

一:介绍

主要就是利用Java swing中的一些东西实现的,这个程序就是让图片在GUI页面中显示出来并且点击按钮可以让图片实现旋转的功能。

二:代码

import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
import java.util.*;
import java.awt.image.BufferedImage;
import java.io.File;
import javax.imageio.ImageIO; 
public class ImageChange{JFrame jf = new JFrame();public static void main(String[] args){new ImageChange();}public ImageChange(){inGui();	}public void inGui(){TransJPanel canvas = new TransJPanel();jf.add(canvas);jf.setBounds(0,0,600,680);jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);jf.setVisible(true);}
}// 这是一个面板的类
class TransJPanel extends JPanel{JButton jb = new JButton("旋转");BufferedImage  img;BufferedImage  img2;//旋转的角度。因为工程需要,代码中直接写成了90,可以根据具体需要动态修改,以符合实际情况int roteAngle = 0;public TransJPanel(){try{img = ImageIO.read(new File("images\\meinu.png"));img2 = ImageIO.read(new File("images\\meinufan.png"));}catch(Exception e){System.out.println("数据读入有错");}this.add(jb);jb.addActionListener( new ActionListener(){	public void actionPerformed(ActionEvent e){	System.out.println("待处理 旋转按钮");setRotate();}});}public void paintComponent(Graphics g){super.paintComponent(g);g.drawImage(img,0,0,this);      // 第一个图显示在(0,0)的位置;drawTransImage(g,img.getWidth()+20,img.getHeight()+20);}// 这是显示另外一个图片的方法public void drawTransImage(Graphics g,int drawx,int drawy){int w = img2.getWidth();int h = img2.getHeight();Graphics2D g2 = (Graphics2D)g;// 设置一个新的原点g2.translate(drawx,drawy);// 如果旋转的角度不为0 ,一般点击按钮这个值都是在一直改变的if (roteAngle != 0){// 旋转变换, [旋转弧度,x,y]   (>> 右移一位,就是缩小两倍)  旋转图像的原点确实就在 长和宽的一半处的位置g2.rotate(Math.toRadians(roteAngle),w >> 1,h >> 1);}g2.drawImage(img2,0,0,w,h,0,0,w,h,null);g2.translate(-drawx,-drawy);    // 把坐标原点给变回去;}// 旋转的,%360的作用是不让它超过360°public void setRotate(){roteAngle += 45;    // 这句用于设置每次旋转的角度roteAngle %= 360;repaint();}
}

三:效果展示在这里插入图片描述

在这里插入图片描述

四:总结

这个代码里面有个问题,就是点击按钮让图片实现旋转的时候,画布中就会多出一个按钮的图片的出来(不过这个按钮是没有用的),暂时不知道如何解决,感觉我也不会回来解决这个问题了。哈哈哈


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部