2015-10-16 7 views
5

Smiley FaceJava: faccina

Voglio sapere che cosa dovrei usare per disegnare la bocca e gli occhi del fronte di smiley sopra. finora sono riuscito a disegnare cosa c'è dietro gli occhi e la bocca (guarda il risultato fino ad ora). Ho provato ad usare Arc2D.double come puoi vedere nel codice in basso contrassegnato come commento.

Ecco quello che ho fatto finora:

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

} 

risultato finora:

enter image description here

+2

bella prova e MVCE finora .... :) –

+0

@JordiCastilla Grazie, ma ora mi sono bloccato. –

+0

non ti preoccupare, qualcuno ti guiderà nella giusta direzione, ho controllato Arch2D e sembra un buon approccio ... ma sono quasi un backend dev ... i grafici non sono la mia migliore abilità –

risposta

1

Un punto di partenza per la linee risata sinistra e destra potrebbe essere seguente frammento di codice.

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