PaintComponent () تاركًا وراء الصور المرسومة مسبقًا بعد إعادة التثبيت ()

StackOverflow https://stackoverflow.com/questions/4084928

سؤال

لدي jpanel الذي يرسم. تحتوي كل صورة على نسختين للدلالة على ما إذا كان قد تم اختيارها أم لا. صورة واحدة طبيعية والآخر لديه حدود ملونة للدلالة على الاختيار. (يمكنك التفكير في هذه الصور كأشكال بسيطة من أجل الحجة)

أي إصدار من الصورة يتم رسمه يتم تحديده عبر mouselisteners. إذا قام المستخدم بتحديد Image1 ، فستعرض Image1 نسخته المميزة.

بشكل عام ، يعمل هذا ، ولكن عند إعادة النشر () يتم ترك النسخة المميزة للصورة. نظرًا لأن الإصدار المميز أكبر قليلاً من الإصدار العادي ، يمكنك رؤيته يتصاعد خلف الصورة العادية المرسومة حديثًا (متداخلة).

اعتقدت أن REPAINT () كان من المفترض أن تتخلص تمامًا من الرسومات الحالية وتبدأ من الصفر ، لا يبدو أن هذا هو الحال هنا. فيما يلي الفكرة العامة ، يتم تبديل Blackclicked داخل Mouselistener.

لذا فإن سؤالي هو كيف أقوم بإعادة التخلص من الصور المرسومة حاليًا والبدء من نقطة الصفر.

وأيضًا ، إذا كانت هناك طريقة أبسط لتحقيق كل هذا ، فيرجى إخبارنا ، فإن صنع نسختين من الصور هو عمل مملة.

@Override
public void paintComponent(Graphics g){

    Graphics2D g2 = (Graphics2D) g;

    if(blackClicked)
        g2.drawImage(blackSelected,0, 0, null);
    else
        g2.drawImage(black,0, 0, null);

    g2.drawImage(green,0, 0, null);
}
هل كانت مفيدة؟

المحلول

كيف أجعل إعادة الطلاء () تتخلص من صورها المرسومة حاليًا والبدء من نقطة الصفر.

تقصد ، كيفية جعل إعادة الطلاء تملأ المكون بلون الخلفية قبل الطلاء؟ ماذا عن إضافة

g2.setColor(getBackground());
g2.fillRect(0, 0, getWidth(), getHeight());

في أعلى paintComponent()?

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top