paintComponent () en laissant derrière des images précédemment tirées après repeindre ()

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

Question

J'ai JPanel qui dessine des images .png. chaque image dispose de 2 copies pour indiquer si oui ou non il a été sélectionné. Une image est normale et on a une bordure de couleur pour signifier la sélection a été faite. (Vous pouvez penser à ces images comme des formes simples pour les besoins du raisonnement)

Quelle version de l'image est tirée est déterminée par MouseListeners. Si l'utilisateur image1, puis image1 affichera sa version en surbrillance.

En général, cela fonctionne, mais sur repeindre () la version en surbrillance de l'image est laissée derrière. Étant donné que la version en surbrillance est légèrement plus grande que la version normale, vous pouvez le voir coller derrière le nouveau dessiné image normale (chevauchement).

Je pensais que repeindre () était censé disposer complètement des dessins en cours et recommencer à zéro, cela ne semble pas être le cas ici. Ci-dessous est l'idée générale, blackClicked est basculée dans un MouseListener.

Alors, ma question est de savoir comment puis-je faire repeindre () se débarrasser de ses images tirées et actuellement commencer à partir de zéro.

En outre, s'il y a un moyen plus simple de réaliser tout cela s'il vous plaît laissez-moi savoir, faire 2 copies d'images est un travail fastidieux.

@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);
}
Était-ce utile?

La solution

  

Comment puis-je faire repeindre () se débarrasser de ses images tirées et en repartir à zéro.

Vous voulez dire, comment faire repeindre fill le composant avec sa couleur d'arrière-plan avant de peindre? Que diriez-vous d'ajouter

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

en haut de paintComponent()?

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top