आपके जेपीनल कार्यान्वयन में, आयत गायब हो जाते हैं क्योंकि पेंट() विधि पिछले चित्रों को अधिलेखित कर देती है। इसे रोकने के लिए, हम अपने दृष्टिकोण को संशोधित करते हैं:
जेपैनल पर सीधे ड्राइंग करने के बजाय, हम अपनी पेंटिंग सतह के रूप में एक बफ़र्डइमेज (कैनवासइमेज) का उपयोग करते हैं। यह हमें पिछले चित्रों को प्रभावित किए बिना छवि को स्थायी रूप से संशोधित करने की अनुमति देता है।
यहां एक संशोधित पेंट() विधि है जो ड्राइंग के लिए कैनवासइमेज का उपयोग करती है:
@Override
public void paint(Graphics g) {
super.paint(g); // Handle inherited painting tasks
Graphics2D bg = (Graphics2D) g;
bg.drawImage(canvasImage, 0, 0, this);
}
canvasImage = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);
अब, आपकी DrawRect() विधि सीधे कैनवासइमेज को संशोधित कर सकती है:
Graphics2D cg = canvasImage.createGraphics();
cg.setColor(Color.WHITE);
cg.fillRect(0, 0, width, height);
यह दृष्टिकोण कई लाभ प्रदान करता है:
public void DrawRect(int x, int y, int size, Color c) {
Graphics2D cg = canvasImage.createGraphics();
cg.setColor(c);
cg.fillRect(x, y, size, size);
}
लगातार ड्राअनुकूलित आरेखण
: पूरे जेपीनेल को दोबारा पेंट करने के बजाय, छवि के केवल संशोधित हिस्से अपडेट किए जाते हैं।अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।
Copyright© 2022 湘ICP备2022001581号-3