我们接着上一节继续在画布图形上进行进一步的修改,我们给上一节绘制的圆形进行上色,并且填充。效果如下
import java.awt.*; import javax.swing.*; import java.awt.geom.Ellipse2D; public class AlgoFrame extends JFrame{ private int canvasWidth; private int canvasHeight; public AlgoFrame(String title, int canvasWidth, int canvasHeight){ super(title); this.canvasWidth = canvasWidth; this.canvasHeight = canvasHeight; AlgoCanvas canvas = new AlgoCanvas(); setContentPane(canvas); pack(); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); setResizable(false); setVisible(true); } public AlgoFrame(String title){ this(title, 1024, 768); } public int getCanvasWidth(){return canvasWidth;} public int getCanvasHeight(){return canvasHeight;} private class AlgoCanvas extends JPanel{ @Override public void paintComponent(Graphics g) { super.paintComponent(g); Graphics2D g2d = (Graphics2D)g;//强制类型转换 int strokeWidth = 10;//设置笔画宽度 g2d.setStroke(new BasicStroke(strokeWidth, BasicStroke.CAP_ROUND, BasicStroke.JOIN_ROUND)); g2d.setColor(Color.YELLOW); Ellipse2D circle = new Ellipse2D.Double(50.2, 50.2, 300, 300);//基本图形对象Float(50.2f,50,300,300); g2d.draw(circle); g2d.setColor(Color.BLUE); Ellipse2D circle2 = new Ellipse2D.Double(50, 50, 300, 300); g2d.fill(circle2); } @Override public Dimension getPreferredSize(){ return new Dimension(canvasWidth, canvasHeight); } } }