2012-03-12 12 views
5

मैं जावा में मास्टरमाइंड बनाने की कोशिश कर रहा हूं। कोड वास्तव में मुश्किल नहीं है, लेकिन मैं एक बहुत अच्छा इंटरफ़ेस रखना चाहता हूं। मैं एक JPanel जो मेरे सारे JFrame लेने है, और मुझे surchargind repaint() विधि के साथ इस JPanel रंग:जेपीनेल के एक हिस्से में बाकी के बिना पेंट करें

:

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

जब मैं एक छवि है, जो एक पैनल है पर क्लिक करें, मैं उस तरह एक पीले रंग की वृत्त

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

और जब मैं एक छेद का चयन करता हूं, तो मैं सर्कल को हटाना चाहता हूं, जो केवल यह इंगित करता है कि गेमर कहां खेल सकता है।

लेकिन मुझे नहीं पता कि सर्कल को कैसे हटाया जाए, या मेरी छवि के केवल एक हिस्से को दोबारा पेंट करें, क्योंकि यह सभी को पुनर्निर्मित करने के लिए बहुत कुछ खर्च करता है।

+0

क्या आपने 'repaint (आयताकार आर) विधि का आह्वान करने का प्रयास किया है? –

+0

हां मैंने कोशिश की लेकिन पुन: चित्रित करें (आयताकार आर) मेरी सारी तस्वीर मिटा दें, और केवल आयताकार – algelos

+0

में निर्दिष्ट भाग को दोहराएं, इसका मतलब क्या है कि यह आपकी सभी तस्वीर मिटा देता है? पश्चाताप (आयताकार आर) का उपयोग करने का उद्देश्य केवल उस हिस्से को पुनर्निर्मित करना है और यही वह है जो आप अपने प्रश्न में पूछ रहे हैं; मुझे यहां कुछ गलत समझा जाना चाहिए। अन्य प्रश्न, 'MasterMindPane.getGraphics() 'क्या है? आप प्रदत्त 'ग्राफिक्स जी' का उपयोग क्यों नहीं करते? –

उत्तर

2

एक बहुत ही सरल तरीका paintImmediately(x,y,w,h);

यह केवल निर्धारित क्षेत्र है कि चौड़ाई w और ऊंचाई एच के साथ पिक्सेल (एक्स, वाई) पर शुरू होता है repaints उपयोग करने के लिए है।

0

आप क्लिप आकार को मोटी अंडाकार पर सेट कर सकते हैं और इसे भर सकते हैं।

मोटी रेखा के साथ बेसिकस्ट्रोक के माध्यम से बड़ा अंडाकार आकार बनाएं।

संबंधित मुद्दे