2015-10-16 3 views
5

Smiley FaceJava: Smiley

Ich will wissen, was ich sollte den Mund und die Augen der oben Smiley zeichnen verwenden. Bisher habe ich es geschafft, was hinter den Augen und dem Mund zu zeichnen (Schauen Sie nach unten für das Ergebnis). Ich habe versucht mit Arc2D.double, wie Sie in den Code als Kommentar markiert sehen können.

Hier ist, was ich bisher gemacht:

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); 
    } 

} 

ERGEBNIS SO FAR:

enter image description here

+2

netter Versuch und MVCE so weit .... :) –

+0

@JordiCastilla Danke, aber ich bin jetzt stecken. –

+0

mach dir keine Sorgen, jemand wird dich in die richtige Richtung führen, ich habe Arch2D überprüft und scheint ein guter Ansatz ... aber ich bin fast Backend Dev ... Grafiken sind nicht meine beste Fähigkeit –

Antwort

1

Ein Ausgangspunkt für die linke und rechte Lachfalten folgende Schnipsel werden könnte.

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