import?javax.swing.*;

創(chuàng)新互聯(lián)網(wǎng)站建設公司,提供網(wǎng)站設計制作、成都做網(wǎng)站,網(wǎng)頁設計,建網(wǎng)站,PHP網(wǎng)站建設等專業(yè)做網(wǎng)站服務;可快速的進行網(wǎng)站開發(fā)網(wǎng)頁制作和功能擴展;專業(yè)做搜索引擎喜愛的網(wǎng)站,是專業(yè)的做網(wǎng)站團隊,希望更多企業(yè)前來合作!
import?javax.imageio.*;
import?java.awt.*;
import?java.awt.image.*;
import?java.awt.geom.*;
import?java.io.*;
/**
*?@author?Hardneedl
*/
class?ImageTransform?extends?JFrame?{
private?static?final?Dimension?minSize?=?new?Dimension(900,?800);
private?static?final?Dimension?maxSize?=?new?Dimension(900,?800);
private?static?final?Dimension?preferredSize?=?new?Dimension(900,?800);
public?Dimension?getMaximumSize()?{return?maxSize;}
public?Dimension?getMinimumSize()?{return?minSize;}
public?Dimension?getPreferredSize()?{return?preferredSize;}
public?String?getTitle()?{return?"Frame?Title";}
private?class?Canvas?extends?JComponent{
private?BufferedImage?img;
private?AffineTransform?trans=new?AffineTransform();
private?void?setImage(BufferedImage?img){
if(img!=null)?this.img?=?img;
if(isVisible())??paintImmediately(0,0,getWidth(),getHeight());
}
private?void?setRota(double?rota){
trans.setToRotation(rota,?(getWidth())1,?(?getHeight()??)1?);
if(isVisible())??paintImmediately(0,0,getWidth(),getHeight());
}
protected?void?paintComponent(Graphics?g)?{
super.paintComponent(g);
g.setColor(Color.BLUE);
g.fillRect(0,0,getWidth(),getHeight());
if?(img==null)return;
Graphics2D?gg=?(Graphics2D)g.create();
int?iw?=?img.getWidth(),?ih?=?img.getHeight();
int?anchorX?=?(getWidth()-?iw)1,?anchorY?=?(getHeight()?-?ih)1;
AffineTransform?af?=?gg.getTransform();
af.translate(anchorX,?anchorY);
af.concatenate(trans);
gg.drawImage(img,af,this);
gg.dispose();
}
}
private?Canvas?canvas?=?new?Canvas();
ImageTransform()?throws?HeadlessException?{
init();
doLay();
attachListeners();
}
private?void?init()?{
try?{
canvas.setImage(ImageIO.read(new?File("1.png")));
canvas.setRota(Math.PI/3);
}?catch?(IOException?e)?{
e.printStackTrace();
}
}
private?void?doLay()?{
Container?container?=?getContentPane();
container.add(canvas,BorderLayout.CENTER);
pack();
}
private?void?attachListeners()?{
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
public?static?void?main(String[]?args)?throws?IOException?{
new?ImageTransform().setVisible(true);
}
}
可以給每一個小方塊設置為一個坐標,變?yōu)橐粋€三階行列式,3*3矩陣,轉(zhuǎn)變?yōu)槎獢?shù)組旋轉(zhuǎn)。觀察一下左旋:
11 12 13? ? ? ? ? ? ? ? ? ? ? ?31 21 11
21 22 23? ? ? ? ? ?→→? ? ? 32? 22? 12
31 32 33? ? ? ? ? ? ? ? ? ? ? ? 33? 23? 13
坐標變換如下:(1,1)變?yōu)椋?,3),(1,2)變?yōu)椋?,3),(1,3)變?yōu)椋?,3)
(2,1)變?yōu)椋?,2),(2,2)變?yōu)椋?,2),(2,3)變?yōu)椋?,2)
(3,1)變?yōu)椋?,1),(3,2)變?yōu)椋?,1),(3,3)變?yōu)椋?,1)
規(guī)律就是(i,j)變?yōu)?j,3-i+1):
如果是2*2的方格,就可以變?yōu)槎A行列式,也就是2*2的二元數(shù)組,這里給出3*3九宮格改變的示意,我的代碼如下:
import?java.util.Random;
public?class?T{
public?static?void?main(String[]?args){
int[][]?a=new?int[3][3];
System.out.println("now?begin?to?form?a?new?integer?array");
Random?r=new?Random();
for(int?i=0;i3;i++){
for(int?j=0;j3;j++){
a[i][j]=r.nextInt(10);
}
}
System.out.println("the?array?is?shown?as?follows:");
for(int?i=0;i3;i++){
for(int?j=0;j3;j++){
System.out.print(a[i][j]+"?");
}
System.out.println();
}
System.out.println("左轉(zhuǎn)九十度");
for(int?i=0;ia.length;i++){
for(int?j=0;ja[i].length;j++){
System.out.print(a[a[i].length-1-j][i]+"?");
}
System.out.println();
}
}
}
由于在double轉(zhuǎn)int時有精度損失,所以轉(zhuǎn)動時會隱約有一條直線。
代碼如下:
import java.awt.*;
import javax.swing.*;
public class MyPanel extends JPanel
{
private int r = 150;
private int angle = 0;
public void paintComponent(Graphics g)
{
int x = (int)(r/2*Math.cos(angle/180.0*Math.PI));
int y = -(int)(r/2*Math.sin(angle/180.0*Math.PI));
g.translate(r+10, r+10);
g.setColor(Color.BLACK);
g.fillArc(-r, -r, 2*r, 2*r, angle, -180);
g.setColor(Color.WHITE);
g.fillArc(-r, -r, 2*r, 2*r, angle, 180);
g.fillArc(x-r/2, y-r/2, r, r, angle, -180);
g.setColor(Color.BLACK);
g.fillArc(-x-r/2, -y-r/2, r, r, angle, 180);
g.drawOval(-r, -r, 2*r, 2*r);
g.fillOval(x-10, y-10, 20, 20);
g.setColor(Color.WHITE);
g.fillOval(-x-10, -y-10, 20, 20);
}
public void setAngle(int angle)
{
while(true)
{
if(angle 0)
angle = angle + 360;
if(angle = 360)
angle = angle - 360;
else break;
}
this.angle = angle;
}
public int getAngle()
{
return angle;
}
public static void main(String[] Args)
{
JFrame f = new JFrame();
final MyPanel aPanel = new MyPanel();
f.add(aPanel);
f.setVisible(true);
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.setSize(350, 350);
f.setLocation(300, 200);
Thread aThread = new Thread(){
public void run()
{
while(true)
{
try
{
aPanel.setAngle(aPanel.getAngle() + 1);//加一逆時針轉(zhuǎn),減一順時針轉(zhuǎn)
aPanel.repaint();
this.sleep(10);//此處可以調(diào)節(jié)轉(zhuǎn)動速度
} catch (InterruptedException e)
{
e.printStackTrace();
}
}
}
};
aThread.start();
}
}
一般是用PDF編輯器旋轉(zhuǎn)的,java好像很高級的樣子
打開迅捷PDF編輯器,旋轉(zhuǎn)頁面是在文檔下面,
找到就可以旋轉(zhuǎn)了,選擇逆時針旋轉(zhuǎn)90度,
就可以將PDF文件弄好,最后在文件下面選擇保存下。希望可以幫助到樓主。
方法就分享到這里
#includestdio.h
#define N 4
int a[N][N]={{1,2,3,4},{5,6,7,8},{9,10,11,12},{13,14,15,16}};
void prt()
{int i,j;
for(i=0;iN;i++)
{
for(j=0;jN;j++)
printf("%4d",a[i][j]);
printf("\n");
}
}
int main()
{int i,j,k,t;
printf("原來的數(shù)組:\n");
prt();
for(i=0;i=N/2;i++)
for(j=i;jN-i-1;j++)
{
t=a[i][j];
a[i][j]=a[j][N-1-i];
a[j][N-1-i]=a[N-1-i][N-1-j];
a[N-1-i][N-1-j]=a[N-1-j][i];
a[N-1-j][i]=t;
}
printf("\n順時針旋轉(zhuǎn)90度后的數(shù)組:\n");
prt();
getch();
return 0;
}
文章標題:順時針旋轉(zhuǎn)java代碼 順時針旋轉(zhuǎn)編程代碼
文章出自:http://chinadenli.net/article18/hppsdp.html
成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供定制開發(fā)、標簽優(yōu)化、自適應網(wǎng)站、品牌網(wǎng)站制作、定制網(wǎng)站、網(wǎng)站排名
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)