IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Java知识库 -> Java中实现图片的旋转功能 -> 正文阅读

[Java知识库]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();
	 }
}

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

在这里插入图片描述

四:总结

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

  Java知识库 最新文章
计算距离春节还有多长时间
系统开发系列 之WebService(spring框架+ma
springBoot+Cache(自定义有效时间配置)
SpringBoot整合mybatis实现增删改查、分页查
spring教程
SpringBoot+Vue实现美食交流网站的设计与实
虚拟机内存结构以及虚拟机中销毁和新建对象
SpringMVC---原理
小李同学: Java如何按多个字段分组
打印票据--java
上一篇文章      下一篇文章      查看所有文章
加:2021-11-12 19:27:07  更:2021-11-12 19:29:28 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 0:45:59-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码