`
kinganpo
  • 浏览: 51300 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

图片的旋转、翻转、放大和缩小

阅读更多

图片的旋转、翻转、放大和缩小

实际上是重写paint(Graphics g)方法

drawImage(Image img, int x, int y, int width, int height, ImageObserver observer)

放缩图片只需要改变几个int类型的参数即可

Graphics2D的方法rotate(double theta, double x, double y)可以用来旋转图片

第一个参数:旋转的角度,以弧度值为单位

第二、三个参数:分别为旋转原点的X和Y坐标

 

import java.awt.*;
import javax.swing.*;

public class RotatePicture extends JLabel implements Runnable{
	
	static Image img = new ImageIcon("D:/Backup/我的文档/水寒剑.jpg").getImage ();
	static double[] rad = {0,Math.PI/2,Math.PI,-Math.PI/2};
	double theta = 0; 

	public void paintComponent(Graphics g){
 		Graphics2D g2d = (Graphics2D)g;
 		g2d.rotate(theta,250,250);
 		g2d.drawImage(img,100,100,300,300,null);
		
	}
	
	public void run(){
						 	
		for(int i=0;;i++){
			 try{
	 		Thread.sleep (10);
	 		}catch(InterruptedException ie){}
	 		
	 		//可以通过正负号来改变旋转方向
			rotate(Math.toRadians(i));//角度转换为弧度值
		}
	}
	
	public void rotate(double d){
		theta = d;
		repaint();
	}
	
	public static void main(String[] args){
		JFrame jf = new JFrame();
		jf.setSize (500,530);	
		RotatePicture rp = new RotatePicture();	
		RotatePicture rp1 = new RotatePicture();
		MyPicture mp = new MyPicture(img,jf);
		JTabbedPane tabbedPane = new JTabbedPane();
		tabbedPane.add("任意角度旋转", rp);
		tabbedPane.add("90度翻转", rp1);
		tabbedPane.add("放大和缩小", mp);
		jf.add(tabbedPane);
		jf.setTitle ("图片的旋转、翻转、放大和缩小");
		jf.setLocationRelativeTo (null);
		jf.setVisible(true);
		jf.setDefaultCloseOperation (JFrame.EXIT_ON_CLOSE);
		Thread t1 = new Thread(rp);
		t1.start ();		
		Thread t2 = new Thread(mp);
		t2.start ();
		for(int i=0;i<4;i++){
			 try{
	 		Thread.sleep (1000);
	 		}catch(InterruptedException ie){}
			rp1.rotate(rad[i]);
			if(i==3)i=-1;
		}		
	}
			
}

class MyPicture extends Canvas implements Runnable{	
	Image img ;
	int w;
	int h;
	int width; 
	int height;
	int rate;
	boolean flag;
	
	public MyPicture(Image image,Container c){
		img = image;
		w = 50;
		h = 50;										
		width = c.getWidth();
		height = c.getHeight()-50;
		rate = 10;
		flag = false;
		System.out.println(width+","+height);
	}
	
	public void run(){
		
		while(true){
			
			if(w<=0||h<=0)
				flag = true;
	 		if(w>=width||h>=height)
	 			flag = false;
	 		
			try{
	 			Thread.sleep (100);
	 			
	 		}catch(InterruptedException ie){
	 			ie.printStackTrace ();
	 		}

	 		if(flag){
	 			w+=10;
	 			h+=10;
	 		}
	 		if(!flag){
	 			w-=10;
	 			h-=10;		 			
	 		}
			repaint();	
		}
	}
	
	public void paint(Graphics g){

		//设置图片左上角坐标		
		int x = (width-w)/2;
		int y = (height-h)/2;
		g.drawImage(img, x, y, w, h,null); 
		 
	}
}

 

 

分享到:
评论

相关推荐

    图片读取旋转放大和缩小

    本主题聚焦于“图片读取旋转放大和缩小”的技术实现,这涉及到计算机视觉和图像处理的基本概念。 首先,我们需要理解图片在计算机中的表示方式。图片通常以像素阵列的形式存储,每个像素包含红、绿、蓝三种颜色分量...

    cropper+layui实现图片裁剪、旋转、放大缩小后上传

    总结来说,"cropper+layui实现图片裁剪、旋转、放大缩小后上传"是一个高效、易用的前端解决方案,它将cropper.js的强大图片处理能力与layui的优雅UI设计相结合,为开发人员提供了一个完整的图片编辑和上传工具,适用...

    js 图片多角度旋转放大缩小

    js 图片多角度旋转,可对图片进行,90度、180度、270度等多角度旋转翻转,也可自定义。 也可对图片进行放大缩小操作。

    layer图片放大旋转IE8.rar

    在这个项目中,Layer被扩展了功能,使其能够支持图片的放大和旋转操作,这对于提升用户体验,尤其是对于那些在旧版浏览器上仍然运行的网站来说,显得尤为重要。 首先,我们要理解Layer的基本用法。Layer通常通过...

    jQuery图片缩放图片图片转动仿QQ空间图片查看特效(全屏,放大,缩小,旋转,镜像,鼠标滚轮缩放)

    至此,我们已经实现了jQuery图片查看特效的基本框架,包括全屏、放大缩小、旋转和镜像。要完善这个功能,还需要考虑边界条件、平滑过渡效果、触摸设备的支持以及其他交互细节。这只是一个基础示例,实际应用可能需要...

    图片处理(图片放大缩小翻转水印镜像等更能)

    5. **标签说明**:这里的标签“图片放大”、“缩小”、“翻转”、“水印”和“镜像”代表了图片处理的五个核心功能。在实际应用中,这些功能常常组合使用,以实现更复杂的效果,比如图片编辑软件中的各种滤镜和特效...

    jQuery适用于手机端图片放大缩小翻转代码.zip

    `jQuery`是一个流行的JavaScript库,它简化了DOM操作、事件处理和动画效果,使得在手机端实现图片的放大、缩小和翻转功能变得相对简单。在这个名为"jQuery适用于手机端图片放大缩小翻转代码"的压缩包中,包含了实现...

    JS图片查看器(包括平移、放大缩小、图片旋转功能)支持IE和Firefox

    放大缩小功能可以让用户更细致地观察图片的细节或者适应不同的屏幕尺寸。同样通过监听鼠标事件,根据滚轮的滚动方向调整图片的大小。使用CSS的`transform`属性的`scale`方法,可以实现图片的缩放,同时保持图片的...

    Android实现图片反转、翻转、旋转、放大和缩小

    在Android开发中,对图片进行各种操作是常见的需求,包括反转、翻转、旋转、放大和缩小等。这些操作可以通过Android的图形库和Bitmap类来实现。以下将详细讲解如何利用Android API完成这些功能。 首先,我们要理解...

    简单的android图片处理应用,实现了旋转,翻转,放大缩小,灰度,亮度,边缘检测,颜色过滤,高斯模糊,裁剪

    3. **放大缩小**:使用`Matrix`类的`postScale`方法,传入相应的缩放比例因子,可以轻松实现图片的放大和缩小。 4. **灰度处理**:灰度处理是将彩色图像转换为单色图像。这通常通过对每个像素的红、绿、蓝分量进行...

    图片的放大缩小翻转MatrixTest

    接下来,我们将深入探讨Matrix类以及如何使用它来实现图片的放大、缩小和翻转。 Matrix类在Android的`android.graphics`包中,它可以表示2D矩阵变换,包括平移、旋转、缩放和倾斜。在处理图片时,我们通常会创建一...

    图片查看器(拖拽 放大 缩小 旋转等)

    标题中的“图片查看器(拖拽 放大 缩小 旋转等)”是指一个能够对图片进行多种操作的应用程序,主要包括拖动、放大、缩小和旋转等功能。这些功能是现代图片查看软件的基础,旨在帮助用户更加方便地浏览和处理图片。 ...

    图片查看器(翻转、鼠标放大缩小等、全屏)

    本项目名为"图片查看器(翻转、鼠标放大缩小等、全屏)",其核心功能包括图片的动态操作和优化的浏览体验。 1. **图片翻转**: 这一功能允许用户将图片水平或垂直翻转,增加图片展示的灵活性。在前端实现时,通常...

    安卓编程实现图片的放大缩小旋转及镜像

    以上就是安卓编程中实现图片放大、缩小、旋转及镜像的基本流程和技术点。在实际开发中,可以根据具体需求进行调整和优化。通过这种方式,用户可以直观地在屏幕上通过手势操作图片,增强应用的交互性和趣味性。

    C# 图像处理-放大与缩小、翻转、旋转

    总结一下,C#提供了强大的图像处理能力,通过Bitmap、Graphics、Matrix等类,我们可以轻松地对图像进行放大、缩小、翻转和旋转。这些基本操作是图像处理的基石,广泛应用于各种软件和应用程序中。理解并熟练运用这些...

    jQuery仿QQ空间图片查看特效(全屏,放大,缩小,旋转,镜像,鼠标滚轮缩放)

    本文将详细解析如何使用jQuery实现一个仿QQ空间的图片查看特效,其中包括全屏显示、图片放大缩小、旋转、镜像以及通过鼠标滚轮进行缩放等高级功能。 首先,我们需要在项目中引入jQuery库。可以下载jQuery的最新版本...

    opengl旋转 变色 放大缩小

    本主题主要关注在OpenGL中实现对象的旋转、变色以及放大缩小操作,这些都是在3D图形编程中常见的基本视觉效果。 1. **OpenGL旋转**: OpenGL中的旋转通常通过`glRotatef()`函数来实现,它接受四个参数:旋转角度、...

    实现unity三维动画播放以及触摸翻转放大缩小

    触摸放大缩小则涉及到摄像机的视距调整。同样,我们需要监听触摸事件,当检测到两个手指同时触摸时,可以通过它们之间的距离变化来判断缩放操作。计算缩放比例,然后更新Camera的field-of-view(视野角度)或...

    PB中图像图像的转换、放大、缩小、旋转、打印等内容.rar

    "PB中图像图像的转换、放大、缩小、旋转、打印等内容.rar"这个压缩包文件显然提供了关于如何在PB中进行这些操作的代码示例。让我们深入探讨一下这些关键知识点。 1. **图像加载与显示**: 在PB中,可以使用`...

Global site tag (gtag.js) - Google Analytics