展开全部
/**
* 画笔
* @e68a8462616964757a686964616f31333330343139auther hardneedl
*/
public interface Brush {
void paint(java.awt.Graphics g);
}
import java.awt.*;
/**
* 三角形
* @auther hardneedl
*/
public class TriangleBrush implements Brush {
private static final Point p0 = new Point(70, 70),
p1 = new Point(70,170),
p2 = new Point(200, 170);
private Polygon polygon;
public TriangleBrush() {
polygon = new Polygon(new int[]{p0.x, p1.x, p2.x},
new int[]{p0.y, p1.y, p2.y}, 3);
}
public void paint(Graphics g) {
Graphics2D g2d = (Graphics2D) g.create();
g2d.fill(polygon);
g2d.dispose();
}
}
import javax.swing.*;
import javax.swing.border.*;
import java.awt.*;
/**
* @author Hardneedl
*/
final class PolygonDemo extends JFrame {
public String getTitle() {return "polygon demo";}
static private final Dimension size = new Dimension(600, 400);
public Dimension getPreferredSize() {return size;}
public Dimension getMaximumSize() {return size;}
public Dimension getMinimumSize() {return size;}
public Dimension getSize() {return size;}
private TriangleBrush brush0,brush1;
private class Canvas extends JComponent{
protected void paintComponent(Graphics g) {
super.paintComponent(g);
Graphics2D gg = (Graphics2D) g.create();
gg.setColor(Color.RED);
gg.translate(50,50);
brush0.paint(gg);
gg.translate(30,30);
gg.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_OVER, .6f));
gg.setColor(Color.BLUE);
brush1.paint(gg);
}
public Border getBorder() {
return BorderFactory.createLineBorder(Color.BLACK,2);
}
}
private Canvas canvas;
PolygonDemo() throws HeadlessException {
init();
attachListeners();
doLay();
}
private void init() {
brush0 = new TriangleBrush();
brush1 = new TriangleBrush();
canvas = new Canvas();
}
private void attachListeners() {
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
private void doLay() {
Container container = getContentPane();
container.add(canvas,BorderLayout.CENTER);
pack();
setVisible(true);
}
public static void main(String[] args) {
System.setProperty("swing.defaultlaf", "com.sun.java.swing.plaf.windows.WindowsLookAndFeel");
SwingUtilities.invokeLater(
new Runnable() {
public void run() {
new PolygonDemo();
}
}
);
}
}