2012-03-12 18 views
5

Java'da bir Mastermind yapmaya çalışıyorum. Kod gerçekten zor değil, ama çok iyi bir arayüze sahip olmak istiyorum. Ben bütün JFrame aldığımız bir Jpanel var ve surchargind repaint() yöntemi ile bu Jpanel boya:Geri kalanını boyamadan JPanel'in bir yerinde boya

: Ben bir Panel var bir resim, tıkladığınızda

public void paint(Graphics g) //méthode permettant de dessiner les éléments sur la carte 
    { 
    super.paintComponents(g); 
    Graphics gr; 
    gr = MasterMindPane.getGraphics(); 

    img = MasterMindPane.getToolkit().getImage("images/plateau4-8.jpg"); 
    gr.drawImage(img, 0, 0, 600, 720, this); 

    gr = bouleRougePane.getGraphics(); 
    img = bouleRougePane.getToolkit().getImage("images/bouleRouge.png"); 
    //gr.drawImage(img, 535, 303, 45, 45, this); 
    gr.drawImage(img, 0, 0, 45, 45, this); 
    gr = bouleOrangePane.getGraphics(); 
    img = bouleOrangePane.getToolkit().getImage("images/bouleOrange.png"); 
    //gr.drawImage(img, 535, 303, 45, 45, this); 
    gr.drawImage(img, 0, 0, 45, 45, this); 
} 

i böyle sarı bir daire çizin

private void bouleRougePaneMouseClicked(java.awt.event.MouseEvent evt) {            
    Graphics2D g2d = (Graphics2D) MasterMindPane.getGraphics(); 

    for(int i = 0; i<4; i++) 
    { 
     g2d.setColor(Color.ORANGE); 
     g2d.setStroke(new BasicStroke(3)); 
     g2d.drawOval(78+i*70, 106+etape*50, 35, 35); 
    } 
}  

Ve bir delik seçtiğimde, yalnızca oyunun nerede oynayabileceğini gösteren daireyi silmek istiyorum.

Ancak, daireyi nasıl sileceğimi veya Resmimin yalnızca bir kısmını yeniden boyayacağımı bilmiyorum, çünkü bunların tümünü yeniden çizmek çok maliyetli.

+0

"Recaint (Rectangle r)" yöntemini çağırmayı denediniz mi? –

+0

Evet Denedim ama yeniden çizdim (Dikdörtgen r) tüm resmimi sil ve sadece Dikdörtgen – algelos

+0

'da belirtilen parçayı yeniden boyayın Ne demek istiyorsun bütün fotoğrafını siler? Yeniden boyamanın (Rectangle r) kullanılma amacı, yalnızca bu bölümün yeniden boyamasını sağlamak ve sorunuzda sormak istediğiniz şeydir; Burada bir şeyi yanlış anlamış olmalıyım. Diğer soru, 'MasterMindPane.getGraphics() 'nedir? Neden sağlanan "Grafik g" yi kullanmıyorsunuz? –

cevap

2

çok basit bir şekilde paintImmediately(x,y,w,h);

Bu genişlik w yüksekliği h piksel (x, y) başlar sadece belirtilen alan yeniden boyar kullanmaktır.

0

Şekil klibini kalın oval'e ayarlayabilir ve doldurabilirsiniz.

Kalın çizgi ile BasicStroke aracılığıyla büyük oval şekli oluşturun.

İlgili konular