Bonjour, j'ai un BufferedImage et je veux dessiner un rectangle dans ce BufferedImage en utilisant la couleur inverse de chaque pixel sous la ligne.
Et en plus mon rectangle doit pouvoir être dessiné avec une rotation ...
des idées ?
Version imprimable
Bonjour, j'ai un BufferedImage et je veux dessiner un rectangle dans ce BufferedImage en utilisant la couleur inverse de chaque pixel sous la ligne.
Et en plus mon rectangle doit pouvoir être dessiné avec une rotation ...
des idées ?
Je ne suis pas sûr d'avoir compris votre question, vous cherchez à passer des pixels en vidéo inverse à l'intérieur d'une zone rectangulaire?
Si je ne me trompe pas, on peut faire passer un pixel en vidéo inverse en inversant chaque valeur de sa couleur rgb. (En prenant 255 - valeur.) Les fonctions getRGB(x, y) et setRGB(x, y) renvoient les codes RGB (avec les trois valeurs) de chaque pixel. Il suffit de faire des boucles et d'inverser chaque pixel.
Bonjour et merci de la réponse.
J'ai déja le systeme de boucle en gérant pixel par pixel, mais comme il faut que je puisse dessiner avec un angle je pensais passer par un Graphics2D en utilisant une AffineTransform et en dessinant un rectangle directement dans mon Graphics2D avec g2d.drawRect().
En fait je ne sais pas comment faire et je tourne en rond a défaut de faire tourner mon rectangle !!
Qu'est-ce qui vous empêche d'utiliser le système de boucles avec un angle?
pour faire un truc de ce genre, je pense que créerais une nouvelle bufferedimage de la taille du rectangle désiré, que j'utiliserais son Graphics pour écrire les nouvelles valeurs des pixels que j'aurais obtenu en effectuant la rotation inverse de celle du rectangle ,puis en faisant un getSubImage().
C'est peut être un peu confus, là, non ? :aie:
Bon... En gros, je peindrais la bufferedimage tournée dans le sens inverse de la rotation du rectangle sur unhe nouvelle buffered image. Puis je clipperais tout ça avec un getsubimage, et ensuite j'utiliserais les pixels pour les modifier un à un. Voilà, voilà, c'est l'idée à la volée...
Je pense que ton principal probleme est de trouver les pixels a modifier dans ta zone rectangulaire (apres rotation).
Pour ma part, je pense que ce qui suit est assez facile:
- cree une nouvelle BufferedImage de la meme taille que la premiere
- la peindre en blanc (par exemple)
- dessiner ton rectangle en noir(toujours par exemple)
- faire tourner ton rectagle det l'angle desire grave a des AffinTransform
Je sais pas si j'ai ete assez clair.....
- parcourir l'image ainsi generee, des que tu tombes sur un pixel noir, alors sur ton image original tu changes la valeur du pixel de meme coordonnees
mon niveau lamentable en trigo !Citation:
Envoyé par BugFactory
Cela n'est'il pas tout simplement possible en se mettant en mode XOR ?
Voir http://java.sun.com/j2se/1.5.0/docs/.../Graphics.html
Penser a faire un setPaintMode() pour revenir en mode normal une fois termine.
Pour la rotation, desole, mais c'est relativement facile sans etre super-mega fort en trigo. Soit un rectangle de coordonnees x et y et de taille width et height.
Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 int centerX = x - width /2; int centerY = y - height /2; // Faire des essais pour trouver la couleur appropriee. graphics.setXORMode(...); graphics.setColor(...); // On se met sur le centre de rotation. graphics.translate(centerX, centerY); // On calcule le decalage d'angle. double angle = (2 * Math.PI) / n; // On dessine chaque rectangle. for (int i = 0 ; i < n ; i++) { graphics.fillRect(- width / 2, - height / 2, width, height); graphics.rorate(angle); } // On revient a l'angle initial. graphics.rotate(- n * angle); // On revient a l'orgine initial. graphics.translage(- centerX, - centerY); graphics.setPaintMode();
merci bouye !
quel temps fait il a Nouméa ?
[HS]Il pleut et il y a eût un coup d'ouest* en début de matinée.
*Pour ceux qui ignorent ce que c'est : de forts vents violents qui arrivent par l'ouest de manière imprévisible en général. Ce qui peut être dangereux pour les navires y compris ceux au port car les rades de Nouméa n'offrent pas trop de protection de ce côté-là alors qu'elles sont bien abritées des vents habituels venant du sud-est.[/HS]
Pense au bouton/tag :resolu: si tu as trouvé solution à ton problème.