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;
- }
- }