新聞中心
java圖像旋轉(zhuǎn)順時(shí)針90度的問題
import?javax.swing.*;
創(chuàng)新互聯(lián)網(wǎng)站建設(shè)公司,提供網(wǎng)站設(shè)計(jì)制作、成都做網(wǎng)站,網(wǎng)頁設(shè)計(jì),建網(wǎng)站,PHP網(wǎng)站建設(shè)等專業(yè)做網(wǎng)站服務(wù);可快速的進(jìn)行網(wǎng)站開發(fā)網(wǎng)頁制作和功能擴(kuò)展;專業(yè)做搜索引擎喜愛的網(wǎng)站,是專業(yè)的做網(wǎng)站團(tuán)隊(duì),希望更多企業(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);
}
}
java俄羅斯方塊旋轉(zhuǎn)算法,求解
可以給每一個(gè)小方塊設(shè)置為一個(gè)坐標(biāo),變?yōu)橐粋€(gè)三階行列式,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
坐標(biāo)變換如下:(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();
}
}
}
java 的旋轉(zhuǎn) 太極圖 問題....
由于在double轉(zhuǎn)int時(shí)有精度損失,所以轉(zhuǎn)動(dòng)時(shí)會(huì)隱約有一條直線。
代碼如下:
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);//加一逆時(shí)針轉(zhuǎn),減一順時(shí)針轉(zhuǎn)
aPanel.repaint();
this.sleep(10);//此處可以調(diào)節(jié)轉(zhuǎn)動(dòng)速度
} catch (InterruptedException e)
{
e.printStackTrace();
}
}
}
};
aThread.start();
}
}
如何使用Java旋轉(zhuǎn)PDF文檔中的圖像
一般是用PDF編輯器旋轉(zhuǎn)的,java好像很高級(jí)的樣子
打開迅捷PDF編輯器,旋轉(zhuǎn)頁面是在文檔下面,
找到就可以旋轉(zhuǎn)了,選擇逆時(shí)針旋轉(zhuǎn)90度,
就可以將PDF文件弄好,最后在文件下面選擇保存下。希望可以幫助到樓主。
方法就分享到這里
將一個(gè)二維數(shù)組旋轉(zhuǎn)90度 用Java編寫代碼
#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順時(shí)針旋轉(zhuǎn)90度后的數(shù)組:\n");
prt();
getch();
return 0;
}
網(wǎng)頁題目:順時(shí)針旋轉(zhuǎn)java代碼 順時(shí)針旋轉(zhuǎn)編程代碼
文章出自:http://fisionsoft.com.cn/article/hppsdp.html