في تطبيق JPanel الخاص بك، تختفي المستطيلات لأن طريقة الطلاء () تقوم بالكتابة فوق الرسومات السابقة. لمنع ذلك، قمنا بتعديل نهجنا:
بدلاً من الرسم مباشرة على JPanel، نستخدم BufferedImage (canvasImage) كسطح طلاء لدينا. يتيح لنا ذلك تعديل الصورة بشكل دائم دون التأثير على الرسومات السابقة.
إليك طريقة الطلاء () المعدلة التي تستخدم صورة Canvas للرسم:
@Override
public void paint(Graphics g) {
super.paint(g); // Handle inherited painting tasks
Graphics2D bg = (Graphics2D) g;
bg.drawImage(canvasImage, 0, 0, this);
}
تهيئة صورة القماش في مُنشئ JPanel الخاص بك مثل:
canvasImage = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);
وضبط سياق الرسومات الخاص به للرسم:
Graphics2D cg = canvasImage.createGraphics();
cg.setColor(Color.WHITE);
cg.fillRect(0, 0, width, height);
رسم المستطيلات على BufferedImageالآن، يمكن لطريقة DrawRect() الخاصة بك تعديل صورة Canvas مباشرة: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