In Ihrer JPanel-Implementierung verschwinden Rechtecke, weil die Methode paint() frühere Zeichnungen überschreibt. Um dies zu verhindern, ändern wir unseren Ansatz:
Anstatt direkt auf dem JPanel zu zeichnen, verwenden wir ein BufferedImage (canvasImage) als unsere Malfläche. Dadurch können wir das Bild dauerhaft ändern, ohne vorherige Zeichnungen zu beeinflussen.
Hier ist eine modifizierte paint()-Methode, die canvasImage zum Zeichnen verwendet:
@Override
public void paint(Graphics g) {
super.paint(g); // Handle inherited painting tasks
Graphics2D bg = (Graphics2D) g;
bg.drawImage(canvasImage, 0, 0, this);
}
Initialisieren Sie canvasImage in Ihrem JPanel-Konstruktor wie folgt:
canvasImage = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);
Und legen Sie den Grafikkontext fest Zeichnung:
Graphics2D cg = canvasImage.createGraphics();
cg.setColor(Color.WHITE);
cg.fillRect(0, 0, width, height);
Jetzt kann Ihre DrawRect()-Methode das CanvasImage direkt ändern:
public void DrawRect(int x, int y, int size, Color c) {
Graphics2D cg = canvasImage.createGraphics();
cg.setColor(c);
cg.fillRect(x, y, size, size);
}
Dieser Ansatz bietet mehrere Vorteile:
Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.
Copyright© 2022 湘ICP备2022001581号-3