图片的旋转、翻转、放大和缩小
实际上是重写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);
}
}
分享到:
相关推荐
将二进制图片读取,并实现任意角度的旋转、放大和缩小
js 图片多角度旋转,可对图片进行,90度、180度、270度等多角度旋转翻转,也可自定义。 也可对图片进行放大缩小操作。
主要介绍了Android实现图片反转、翻转、旋转、放大和缩小的相关代码,需要的朋友可以参考下
简单的android图片处理应用,实现了旋转,翻转,放大缩小,灰度,亮度,边缘检测,颜色过滤,高斯模糊,裁剪
jQuery仿QQ空间图片查看特效(全屏,放大,缩小,旋转,镜像,鼠标滚轮缩放)
模仿新浪微博上的图片特效,实现图片在想放大缩小,支持上下左右的图片翻转效果,效果很不错
实现unity三维动画播放以及触摸翻转放大缩小
图片查看器(托转、放大、缩小、旋转、水平翻转、垂直翻转)
用于图像处理实验,基于C#的简单程序。实现图像的缩小与放大,包括等比例缩放,和自定义比例缩放;图像的水平/垂直翻转;图像可变角度的旋转操作
PB中图像图像的转换、放大、缩小、旋转、打印等内容,支持PB9开发,打开即用。此代码仅供参考。
C#版图像处理界面,包含打开图像、保存图像、二值化、灰度化、旋转、翻转、放大、缩小等操作
用C# 实现的图片处理程序,可以左右旋转,翻转,文件拖入控件,图片的镜像拼接,放大,缩小,花了很多精力去写
可对图片进行放大缩小,播放一组图片,旋转图片,翻转图片,自定义回调函数
亲们 这个博客上的旋转图片、放大缩小。本人亲自用了。很好用哦!
对图片进行浏览查看,有360度旋转翻转,放大,缩小等效果。
可以放大和缩小图片,最大放大到130%,最小缩小到30%。 可以旋转图片,左旋转和右旋转分别是每次旋转90度。 可以上下翻转和水平翻转图片,点击按钮可以进行翻转和恢复默认状态。 可以使用键盘的箭头键进行上一张和下...
qt5工程,实现类似于图片浏览器功能,QGraphicsView(平移/缩放/旋转);参考某大神的做法;
1)实现缩放图片:加载图片时根据屏幕缩放图片; 2)实现图片的翻转、旋转; 3)实现图片的放大、缩小、还原初始大小;... 4)实现图片的拖拽、滚轮放大缩小图片; 5)浮动控制按钮对图片进行控制(div)