import java.awt.Canvas;
import java.awt.Font;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.Image;
import java.awt.Toolkit;
import java.awt.geom.AffineTransform;
import java.awt.geom.Line2D;
import javax.swing.JFrame;
/**
* 返回表示旋转变换的变换。表示返回变换的矩阵是:
[ cos(theta) -sin(theta) 0 ]
[ sin(theta) cos(theta) 0 ]
[ 0 0 1 ]
用正角度 theta 进行的旋转将 X 正半轴上的点向 Y 正半轴旋转。还要注意上文处理 90 度旋转的讨论。
参数:
theta - 用弧度测量的旋转角度
返回:
使用指定旋转角度创建的、作为旋转变换的 AffineTransform 对象。
*/
public class Draw2DRotate extends JFrame{
public Draw2DRotate(){
add("Center",new MyCanvas2());
setSize(400, 400);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setVisible(true);
}
public static void main(String[] args) {
Draw2DRotate d2 = new Draw2DRotate();
}
}
class MyCanvas2 extends Canvas{
public void paint(Graphics g){
Graphics2D g2d = (Graphics2D)g;
//rotate:旋转 循环 指定的原点和方向旋转
AffineTransform at = AffineTransform.getRotateInstance(Math.PI/16.0d);
g2d.setTransform(at);
Line2D.Double shape = new Line2D.Double(0.0,0.0,300.0,300.0);//一条线
g2d.draw(shape);
g2d.setFont(new Font("Helvetica",Font.BOLD,24));
String text = "Java2s";
g2d.drawString(text, 300, 50);//画这个字
Toolkit toolkit = Toolkit.getDefaultToolkit();//获取默认工具包。
Image image = toolkit.getImage("E:\\java\\Test\\icon\\44.png");
g2d.drawImage(image, 100, 50, this);
}
}