Partage
  • Partager sur Facebook
  • Partager sur Twitter

Java Swing paintComponent dessin adaptatif

Comment repeindre une partie seulement des données - Mandelbrot

19 septembre 2021 à 15:22:28

Bonjour à tous !

Dans une fenêtre Java Swing je dessine la fractale de Mandelbrot pixel par pixel.

On peut déplacer l'image et zoomer avec la souris.

Ca marche bien mais c'est lent, il faut plusieurs secondes pour dessiner l'image. J'aimerais pouvoir dessiner l'image rapidement une première fois, en qualité très réduite, puis de façon incrémentale en augmentant la qualité. L'image complète serait obtenue après plusieurs secondes sans bouger, mais dès qu'on zoome, le dessin reprendrait du début. L'idée est de garder une interaction fluide avec l'utilisateur.

Existe-t-il une manière standard de faire cela ? Ou bien faut-il trouver une bidouille avec les timers et l'Event Dispatch Thread ?

Merci d'avance.

-
Edité par leroidangleterre 19 septembre 2021 à 15:25:12

  • Partager sur Facebook
  • Partager sur Twitter
20 septembre 2021 à 15:38:51

"Bidouilles" ? Il faut faire avec des timers et l'EDT, exactement ce que tu as expliqué ici que tu veux faire.
  • Partager sur Facebook
  • Partager sur Twitter
4 octobre 2021 à 16:04:59

Bonjour tout le monde, je me demande aussi, si on dessiner pixel par pixel avec swing sujr un graphics2d ? Et comment ?

  • Partager sur Facebook
  • Partager sur Twitter
4 octobre 2021 à 19:24:14

C'est vaguement faisable en remplissant des carrés de 1 pixel par 1 pixel. Mais en réalité c'est pas fait pour ça.

Graphics2D raisonne plutôt en vectoriel et peut notamment appliquer des transformations d'agrandissement et de réduction, ce qui fait que tes pixels grandiraient ou rétréciraient. Certes à la fin, et en principe, les dessins sont appliqués dans une matrice de pixels. Mais pour dessiner en pixels il vaut mieux accéder à cette matrice directement, plutôt qu'essayer de le faire via Graphics2D.

  • Partager sur Facebook
  • Partager sur Twitter
29 octobre 2021 à 18:37:05

Merci beaucoup pour ce conseil
  • Partager sur Facebook
  • Partager sur Twitter