2015-10-16 65 views
5

Smiley FaceJava:笑脸

我想知道我应该用什么来画出上述笑脸的嘴和眼睛。到目前为止,我设法画出了眼睛和嘴巴后面的东西(到目前为止,看看结果如何)。我尝试使用Arc2D.double,因为您可以在标记为注释的代码中看到它。

这是我迄今所取得:

import java.awt.geom.*; 
import java.awt.*; 
import java.awt.event.*; 
import javax.swing.*; 

public class draw2 extends JPanel 
{ 
    public void paintComponent(Graphics g) 
{ 
    super.paintComponent(g); 
    Graphics2D g2 = (Graphics2D) g; 
    this.setBackground(new Color(255,255,255)); 

    g.setColor(Color.yellow); 
    g.fillOval(100,100,300,300); 

    g.setColor(Color.white); 
    g.fillArc(110,120,250,250,90,180); 

    g.setColor(new Color (218,165,32)); 
    g.drawArc(130,110,250,280,90,-180); 

    g.setColor(Color.yellow); 
    g.fillOval(125,105,250,290); 

    // draw Arc2D.Double 
    //g2.setColor(Color.black); 
    //g2.fill(new Arc2D.Double(130, 200, 200,150,170, 200, Arc2D.OPEN)); 


} 


    public static void main (String[] args) 
    { 
     JFrame f = new JFrame("Task 2"); 
     f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
     draw2 d = new draw2(); 
     f.add(d); 
     f.setSize(600,600); 
     f.setVisible(true); 
    } 

} 

结果又:

enter image description here

+2

不错的尝试和mvce到目前为止.... :) –

+0

@JordiCastilla谢谢你,但我现在卡住。 –

+0

别担心,有人会引导你正确的方向,我检查了Arch2D,似乎是一个很好的方法......但我几乎是后端开发......图表不是我最好的技能 –

回答

1

一个出发点左右笑纹可能是下面的代码片段。

BasicStroke stroke = new BasicStroke(
     12, 
     BasicStroke.CAP_BUTT, 
     0, 
     BasicStroke.JOIN_BEVEL 
); 
g2.setStroke(stroke); 

GeneralPath leftLaughLine = new GeneralPath(); 
int x = 150; 
int y = 230; 
leftLaughLine.moveTo(x, y); 
leftLaughLine.curveTo(x - 20, y + 5, x - 25, y + 25, x - 25, y + 25); 
g2.draw(leftLaughLine); 

GeneralPath rigthLaughLine = new GeneralPath(); 
x = 350; 
y = 230; 
rigthLaughLine.moveTo(x, y); 
rigthLaughLine.curveTo(x + 20, y + 5, x + 25, y + 25, x + 25, y + 25); 
g2.draw(rigthLaughLine); 

enter image description here