2015-10-16 21 views
5

Smiley FaceJava: gülen yüz ben yukarıdaki gülen yüz ağzını ve gözlerini çizmek için kullanması gereken bilmek istiyorum

. Şimdiye kadar gözlerin ve ağzın arkasındaki şeyi çizmeyi başardım (sonuca şu ana kadar bak). Yorum olarak işaretlenmiş olan kodda görebileceğiniz gibi Arc2D.double kullanmayı denedim. İşte

i şimdiye kadar yapılan budur: DEFA

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

} 

SONUÇ:

enter image description here

+2

iyi deneme ve mvce şimdiye kadar .... :) –

+0

@JordiCastilla teşekkür ederim ama şimdi şaşırıp. –

+0

Endişelenmeyin, birisi size doğru yönde rehberlik edecek, Arch2D'yi kontrol ettim ve iyi bir yaklaşım gibi görünüyor ... ama neredeyse arka arkaya ... grafikleri benim en iyi yeteneğim değil –

cevap

1

sol ve sağ kahkaha hatları için bir başlangıç ​​noktası pasajı şu olabilir.

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

İlgili konular