java旋转
① java实现图片旋转90度的问题
类Graphics2D的方法rotate(double theta, double x,
double y)可以用来旋转图片
② java将坐标轴向右旋转90度
一般用Graphic2D 来实现
g2d 里有rotate、translate、scale方法
代码片段如下:
@Override
publicvoidpaintComponent(Graphicsg){
Graphics2Dg2=(Graphics2D)g;
g2.rotate(Math.toRadians(45));
g2.drawImage(image,0,0,this.getWidth(),this.getHeight(),null);
}
③ java游戏240x320旋转之后如何修改按键值
下载辅助软件。
1、首先你需要下载一个软件ChMobileKey,用来修改java240X320旋转之后的键位,解压后打开ChMobileKey.exe,右边的9宫格子就是我们要修改的地方,这时候点“缺省设置”。
2、数字1-16对应的就是手机键盘上的按键,“原始键值”对应的数字就是我们等等需要修改的,然后右边9宫格对应触摸按键处在屏幕的位置,里面的数字就是我们需要替换的数字。
3、然后点”运行转换“,选定要转换的JAVA游戏,就能生成改好触摸键的JAVA游戏。
④ java图像旋转失去质量问题,怎么解决
使用的几个类
Graphics2d
AffineTransform
BufferedImage
- BufferedImage bufferedImage = ImageUtil.getImageByPath("bg.png");
- Graphics2D g2d = bufferedImage.createGraphics();
- g2d.rotate(Math.toRadians(90), bufferedImage.getWidth() >> 1, bufferedImage.getHeight() >> 1);
- g2d.dispose();1234
- BufferedImage bufferedImage = ImageUtil.getImageByPath("bg.png");
- AffineTransform tx = new AffineTransform();
- tx.rotate(0.5, bufferedImage.getWidth() / 2, bufferedImage.getHeight() / 2);
- AffineTransformOp op = new AffineTransformOp(tx,
- AffineTransformOp.TYPE_BILINEAR);
- bufferedImage = op.filter(bufferedImage, null);
1. Graphics2d 方式
利用Graphics2d的rotate方法来实现图片旋转,奇怪的是一直不生效,实现代码如下
2.AffineTransform方式
⑤ java俄罗斯方块旋转算法,求解
可以给每一个小方块设置为一个坐标,变为一个三阶行列式,3*3矩阵,转变为二元数组旋转。观察一下左旋:
11 12 13 31 21 11
21 22 23 →→ 32 22 12
31 32 33 33 23 13
坐标变换如下:(1,1)变为(1,3),(1,2)变为(2,3),(1,3)变为(3,3)
(2,1)变为(1,2),(2,2)变为(2,2),(2,3)变为(3,2)
(3,1)变为(1,1),(3,2)变为(2,1),(3,3)变为(3,1)
规律就是(i,j)变为(j,3-i+1):
如果是2*2的方格,就可以变为二阶行列式,也就是2*2的二元数组,这里给出3*3九宫格改变的示意,我的代码如下:
importjava.util.Random;
publicclassT{
publicstaticvoidmain(String[]args){
int[][]a=newint[3][3];
System.out.println("");
Randomr=newRandom();
for(inti=0;i<3;i++){
for(intj=0;j<3;j++){
a[i][j]=r.nextInt(10);
}
}
System.out.println("thearrayisshownasfollows:");
for(inti=0;i<3;i++){
for(intj=0;j<3;j++){
System.out.print(a[i][j]+"");
}
System.out.println();
}
System.out.println("左转九十度");
for(inti=0;i<a.length;i++){
for(intj=0;j<a[i].length;j++){
System.out.print(a[a[i].length-1-j][i]+"");
}
System.out.println();
}
}
}
⑥ java 怎么让一个图形绕一个点旋转360度
- importjava.awt.Canvas;
- importjava.awt.Graphics;
- importjava.awt.Graphics2D;
- importjava.awt.RenderingHints;
- importjava.awt.image.BufferedImage;
- /**
- *@authorZhengYesheng
- */
- {
- =-1997487731464495923L;
- BufferedImageimg;
- BufferedImagerotatedImg;
- intdegress=0;
- publicRotateImageCanvas(BufferedImageimg)
- {
- super();
- this.img=img;
- newThread(this).start();
- }
- @Override
- publicvoidrun()
- {
- while(true)
- {
- //A,与B的代码配合决定旋转的速度
- degress+=1;
- degress%=360;
- repaint();
- try
- {
- if(degress==0)
- {
- //绕一周后等待的时间在这里设置
- Thread.sleep(3*1000);
- }
- else
- {
- //考虑到视觉平滑,这里不应大约40。
- Thread.sleep(30);
- }
- }
- catch(InterruptedExceptione)
- {
- //TODOAuto-generatedcatchblock
- e.printStackTrace();
- }
- }
- }
- @Override
- publicvoidpaint(Graphicsgraphics)
- {
- super.paint(graphics);
- //获取旋转指定角度后的图片。为了避免累计误差,这里是用原始图像旋转的
- rotatedImg=rotateImage(img,degress);
- //绘制旋转后的图片
- graphics.drawImage(rotatedImg,0,0,this);
- }
- /**
- *旋转图片为指定角度。
- *注意:1、这个方法实现了图像的基于中点的旋转,要想绕指定点,需要配合Matrix类
- *2、为避免图像被裁切,结果图片的尺寸也需要动态计算
- *3、现在旋转后有黑色背景,如果不需要这个效果,需要设置结果图片的Alpha模式
- *
- *@parambufferedimage
- *目标图像
- *@paramdegree
- *旋转角度
- *@return
- */
- (BufferedImagebufferedimage,intdegree)
- {
- intw=bufferedimage.getWidth();
- inth=bufferedimage.getHeight();
- inttype=bufferedimage.getColorModel().getTransparency();
- BufferedImageimg;
- Graphics2Dgraphics2d;
- (graphics2d=(img=newBufferedImage(w,h,type)).createGraphics())
- .setRenderingHint(RenderingHints.KEY_INTERPOLATION,RenderingHints.VALUE_INTERPOLATION_BILINEAR);
- graphics2d.rotate(Math.toRadians(degree),w/2,h/2);
- graphics2d.drawImage(bufferedimage,0,0,null);
- graphics2d.dispose();
- returnimg;
- }
- }