salut comment on peut dessier pixel par pixel avec swing sujr un graphics2d?
MERCI
salut comment on peut dessier pixel par pixel avec swing sujr un graphics2d?
MERCI
ba ya pas de méthode drawPixel sur Graphics2D ... c'est bizarre d'ailleurs![]()
je voit qu'une solution un peut crade c'est de faire un drawLine avec une longueur de ligne à 1.
Chercher dans la Javadoc directement depuis Firefox / IE7 : http://lebesnec.free.fr/?p=8
on m'a suggéré d'utiliser :
void setRGB(int x, int y, int rgb) => modification d'un pixel.
void setRGB(int startX, int startY, int w, int h, int[] rgbArray, int offset, int scansize) => modification d'une zone.
mais ca marche pas pour des valeur de x et y superieures a 255 et j'ai pas compri !!
setRGB, c'est pour une BufferedImage, et pas pour un Graphics2D (Mais rien ne t'empêche de dessiner une BufferedImage sur un Graphics2D)
Ce qui m'embête, c'est ton histoire de x et y pas supérieurs à 255.. Il n'y a pas de raison à cela. Tu pourrais mettre un bout de code pour voir comment tu initialise ton dessin ? Et quelle erreur ça te renvoie ?
La différence entre la théorie et la pratique est plus mince en théorie qu'en pratique
voilà le code que j'utilise
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 private BufferedImage bimg; public void paint(Graphics g1) { MemoryMonitor.g = (Graphics2D) g1; ... // mon operation for (i = 0 ; i < 100 ; i++) { bimg.setRGB(200 +i , 400 + i,couleur); } // je dessine g.drawImage(bimg, 0, 0, this);
et la création de ta bufferedimage se fait avec quels paramètres?
La différence entre la théorie et la pratique est plus mince en théorie qu'en pratique
la voila
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 Dimension d = getSize(); System.out.println("w...h"+w+".."+h); if (d.width != w || d.height != h) { w = d.width; h = d.height; bimg = (BufferedImage) createImage(w, h);
donc si je comprend bien...
tu es sûr que :
1 - w >=299
2 - h >=499
(à ce propos, si tu fais
, ça te renvoie quoi ?)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 Dimension d = getSize(); System.out.println("w...h"+w+".."+h); if (d.width != w || d.height != h) { w = d.width; h = d.height; System.out.println("w...h"+w+".."+h); bimg = (BufferedImage) createImage(w, h);
3 - que couleur est valide
Mais ça plante... c'est ça ?
Quelle erreur et à quel moment ?
La différence entre la théorie et la pratique est plus mince en théorie qu'en pratique
le probleme c 'est que le bloc :
for (i = 0 ; i < 100 ; i++)
{
bimg.setRGB(200 +i , 400 + i,couleur);
}
quand je l'enleve mon aimge s'affche ...et quand je le remet rien en s'affiche : seulement mon jpanel conteneur vide!!![]()
et pour repondre a l'autre question : voila les dimensions de ma fentre renvoyées
w...h988..953
au fait si on considere le bloc suivant :
comment une fois que j'utilise le setRGB sur bimg , faire passer cette information a big pour la dessiner? je crois que c'est ca qui emmanque !
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 if (d.width != w || d.height != h) { w = d.width; h = d.height; bimg = (BufferedImage) createImage(w, h); big =bimg.createGraphics();
Pourrais-tu nous poste le code complet de ta classe s'il-te-plait nottament la maniere dont tu dessines ton image sur l'ecran plutot que des petits bouts de part et d'autre. Et as-tu pense a appeler repaint() sur le JPanel apres avoir modifie ton image ?
Les methodes de BufferedImage permettent de manipuler des pixels car comme leur nom l'indique elles sont bufferisee et il existe bien une representation de l'image sous forme de tableau de pixel (un Raster) qq part dans la classe. Cependant certaines de ces methodes peuvent faire perdre l'acceleration materielle (le contenu de l'image est deplace en memoire centrale pour la modif et ne revient pas en memoire video ; l'image devient et reste "software").
La methode la plus commune (mais pas forcement la plus optimisee) pour dessiner 1 pixel dans une image quelconque (une Image par exemple) c'est de recuperer son graphics et de remplir un rectangle de taille 1. Dessiner une line peut ne pas suffire car le Stoke joue en Java2D, il faut penser a mettre sa valeur AVANT de dessiner. Cependant quelque soit la methode il faut faire attention car certains RenderingHints peuvent modifier le resultat obtenu.
Merci de penser au tagquand une réponse a été apportée à votre question. Aucune réponse ne sera donnée à des messages privés portant sur des questions d'ordre technique. Les forums sont là pour que vous y postiez publiquement vos problèmes.
suivez mon blog sur Développez.
Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the universe trying to produce bigger and better idiots. So far, the universe is winning. ~ Rich Cook
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager