package unit14;
import javax.swing.*;
import java.awt.*;
import java.awt.geom.AffineTransform;
import java.awt.geom.Ellipse2D;
public class Example14_2 {
public static void main(String args[]){
JFrame jFrame=new JFrame();
jFrame.setVisible(true);
jFrame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
jFrame.setSize(400,400);
jFrame.add(new MyCanvas3());
}
}
class MyCanvas3 extends JPanel{
public void paint(Graphics g){
super.paint(g); //这句书上落了
Graphics2D graphics2D=(Graphics2D)g;
Ellipse2D ellipse2D=new Ellipse2D.Double(20,20,80,40);
String str="hello,world";
AffineTransform transform=new AffineTransform(); //这一句必须写在for循环外
for(int i=0;i<12;i++){ //这个循环的判断条件如果改为i<24就能恰好转回到原点
transform.rotate(15.*Math.PI/180.,60,40);
graphics2D.setTransform(transform);
graphics2D.draw(ellipse2D);
}
transform=new AffineTransform();
//这句另外加的;否则上一次循环的旋转会影响到这一次旋转的位置
for(int i=0;i<12;i++){
transform.rotate(15.0*Math.PI/180,160,160);
graphics2D.setTransform(transform);
graphics2D.drawString(str,160,160);
}
}
}
JAVA2实用教程第5版 14.2
最新推荐文章于 2024-07-08 14:58:49 发布