📄 shape2d.java
字号:
import java.awt.*;
import java.util.*;
import java.awt.geom.*;
import javax.swing.*;
public class Shape2d extends JFrame
{
public Shape2d()
{
super("drawing 2d shapes");
setSize(600,600);
show();
}
public void paint(Graphics g)
{
int xpoint[] = {55 ,67 ,109 ,73 ,83,55, 27 ,37 ,1, 43};
int ypoint[] = {0, 36,36,54,96,72,96,54,36,36};
Graphics2D g2 = (Graphics2D) g;
g2.setColor(Color.red);
g2.translate(100,50);
g2.rotate((45*java.lang.Math.PI)/180); // radians=degree * pie / 180
g2.fillRect(0,0,100,100);
g2.setTransform(new AffineTransform());
AlphaComposite ac =
AlphaComposite.getInstance(AlphaComposite.SRC_OVER,0.5f);
g2.setComposite(ac);
g2.setColor(Color.green);
g2.fillRect(50,0,100,100);
g2.setColor(Color.blue);
g2.fillRect(125,75,100,100);
g2.setColor(Color.yellow);
g2.fillRect(50,125,100,100);
g2.setColor(Color.pink);
g2.fillRect(-25,75,100,100);
GeneralPath p = new GeneralPath();
p.moveTo(xpoint[0], ypoint[0]);
for (int i=1;i<xpoint.length;i++)
p.lineTo(xpoint[i], ypoint[i]);
p.closePath();
g2.setColor(Color.CYAN);
g2.translate(200,200);
g2.draw(p);
int w = getSize().width;
int h = getSize().height;
// 创建一个椭圆,并将它设为clipping path
Ellipse2D e = new Ellipse2D.Float(w/8,h/8,w/8,h/8);
g2.setClip(e);
g2.setColor(Color.cyan);
g2.fillRect(0,0,w,h);
// 修改clipping path
// 将它设为当前clip和一个新矩形的交集
Rectangle r = new Rectangle(w/8+10,h/8+10,w/8-20,h/8-20);
g2.clip(r);
// 填充画布
// 只有新clip内的区域才被填充
g2.setColor(Color.magenta);
g2.fillRect(0,0,w,h);
}
public static void main(String arg[])
{
Shape2d app = new Shape2d();
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -