J'ai besoin d'afficher un grand nombre (500+) de petits cercles sur un formulaire pour simuler des LED. Cependant, ces cercles doivent être assez petits, d'environ 8 ou 9 pixels de diamètre. Jusqu'ici, dans mes tests, j'ai assemblé du code qui crée une classe Led qui utilise une forme (Ellipse2D.Double) et l'affiche directement sur le JFrame à partir de la méthode de peinture de JFrame.Java Mise à jour de petits cercles
Cela m'a conduit à deux observations/questions:
1) Tout d'abord, à moins d'une autre méthode, Java semble avoir du mal à dessiner de petits cercles. Ils semblent «casser» dans le coin inférieur droit avec une largeur de stylo de défaut (ou 1 pixel), qui coupe cette partie en laissant un cercle déformé. Si je peux dessiner (beaucoup) de petits cercles et les faire bien paraître?
2) Mon JFrame sous-classé remplace la méthode de peinture pour dessiner ces 'leds', bien qu'il appelle aussi super.paint pour s'assurer que le JFrame est dessiné. Cependant, je vois qu'il dessine rarement la LED lors de la première apparition, ou lorsque le formulaire est déplacé hors écran ou en arrière, ou lorsqu'une application est mise en avant et déplacée de nouveau, et la seule fois où la méthode de peinture est appelé est quand je minimiser/maximiser le formulaire. Ne devrait-on pas peindre la peinture à chaque fois que la forme a besoin d'être peinte?
Non, j'ai modifié tout ce qui a trait à l'antialiasing. Ceci est juste très basique "créer et afficher un cercle sur un JFrame" – Dave
Hmm, je pense que la valeur par défaut est d'avoir antialiasing sur. Cela montre comment l'activer (pour l'éteindre, utilisez RenderingHints.VALUE_ANTIALIAS_OFF): http://www.java2s.com/Code/JavaAPI/java.awt/Graphics2DsetRenderingHintsMaphints.htm – zedoo
Je pensais que la valeur par défaut était * off *. Il doit être * sur *, en particulier pour les petits cercles: 'g2d.setRenderingHint (RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON)'. – trashgod