使用fillArc绘制笑脸

时间:2017-03-16 14:59:55

标签: java graphics2d

如何获得完整的笑脸?

我正试图用满嘴微笑画出一张幸福的脸, 它给了我半月的结果。

我怎样才能得到像图片一样的结果?

我应该使用什么代码? 我试图绘制一条曲线,但我非常初学者,我找不到填补它的方法。

this should be the end result

这是我的代码:

import java.awt.BasicStroke;
import java.awt.Color;
import java.awt.Container;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.geom.Line2D;
import javax.swing.*;
import java.awt.Shape;
import java.awt.Stroke;
import java.awt.geom.Rectangle2D;
import javax.swing.JComponent;
import javax.swing.JFrame;

public class Smiley  extends JFrame {

    // constructor sets window's title bar string and dimensions (full screen)
    public Smiley (){
        super( "Happy Face" );
        setSize( 1660, 1080 );
        setVisible( true );
    }

    public void paint( Graphics g ){

        Graphics2D g2 = (Graphics2D) g;

        g2.setStroke(new BasicStroke(7));

        // call superclass's paint method
        super.paint( g );

        g.setColor(Color.yellow);
        g.fillOval(500, 200, 400, 400);
        g.setColor(Color.white);
        g.fillOval(520, 350, 100, 100);
        g.fillOval(780, 350, 100, 100);

        g2.setPaint(Color.black);

        g.drawOval(500, 200, 400, 400);

        g.fillArc( 100, 120, 80, 80,180 , 180 );

1 个答案:

答案 0 :(得分:0)

  

我试图绘制一条曲线,但我找不到填充它的方法。

嗯,你不能填一条曲线。

我认为你的意思是你要填充两条曲线之间的白色部分。

您可以使用GeneralPath。它允许您将多条线/曲线组合成一个形状。然后你画出形状并填充它。

所以基本代码可能是这样的:

GeneralPath gp = new GeneralPath();
gp.moveTo(...); // starting point
gp.curveTo(...); // first curve
gp.moveTo(...); // reset back to starting point
gp.curveTo(...); // second curve
g2.setColor( Color.WHITE );
g2.fill( gp );