Maison > Java > javaDidacticiel > Comment dessiner des rectangles qui ne disparaîtront pas sur un JPanel ?

Comment dessiner des rectangles qui ne disparaîtront pas sur un JPanel ?

Patricia Arquette
Libérer: 2024-11-05 06:23:01
original
750 Les gens l'ont consulté

How to Draw Rectangles That Won't Disappear on a JPanel?

Dessiner des rectangles qui ne disparaîtront pas

Dans votre code, vous avez créé une classe MyPanel qui étend JPanel. Au sein de cette classe, vous définissez une méthode DrawRect qui prend plusieurs arguments pour dessiner un rectangle. Cependant, lorsque vous appelez repaint(), il redessine tout le panneau, y compris les rectangles précédents.

Pour éviter cela, vous pouvez plutôt utiliser Graphics2D.drawImage() pour dessiner votre rectangle au-dessus du canevas existant. Voici comment modifier votre code :

<code class="java">class MyPanel extends JPanel {
  private BufferedImage canvasImage; // Create a BufferedImage to store the canvas

  public void DrawRect(int x, int y, int size, Color c) {
      if (canvasImage == null) {
          canvasImage = new BufferedImage(getWidth(), getHeight(), BufferedImage.TYPE_INT_ARGB);
          Graphics2D g = canvasImage.createGraphics();
          g.setColor(getBackground());
          g.fillRect(0, 0, getWidth(), getHeight());
          g.dispose();
      }
      
      Graphics2D g = canvasImage.createGraphics();
      g.setColor(c);
      g.fillRect(x, y, size, size);
      g.dispose();
      
      repaint();
  }
  
  @Override
  public void paint(Graphics g) {
      super.paint(g);
      g.drawImage(canvasImage, 0, 0, null); // Draw the canvasImage onto the panel
  }
}</code>
Copier après la connexion

Remarque :

  • Cette approche crée une BufferedImage comme surface de dessin, qui persiste lors des appels de repaint, permettant de dessiner des rectangles qui ne disparaissent pas.
  • N'oubliez pas de vérifier si canvasImage est null et de l'initialiser avant de dessiner pour éviter de dessiner dessus une toile vierge.
  • Dans Paint, dessinez l'image de la toile sur le panneau pour afficher les rectangles.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal