IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

AWT/Swing Java Discussion :

Ligne dans une BufferedImage avec couleur inverse


Sujet :

AWT/Swing Java

  1. #1
    Futur Membre du Club
    Inscrit en
    Avril 2006
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 9
    Points : 6
    Points
    6
    Par défaut Ligne dans une BufferedImage avec couleur inverse
    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 ?

  2. #2
    Membre chevronné
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    940
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 940
    Points : 1 817
    Points
    1 817
    Par défaut
    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.

  3. #3
    Futur Membre du Club
    Inscrit en
    Avril 2006
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 9
    Points : 6
    Points
    6
    Par défaut
    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 !!

  4. #4
    Membre chevronné
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    940
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 940
    Points : 1 817
    Points
    1 817
    Par défaut
    Qu'est-ce qui vous empêche d'utiliser le système de boucles avec un angle?

  5. #5
    Membre averti Avatar de dazz_x
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    269
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations forums :
    Inscription : Mars 2006
    Messages : 269
    Points : 328
    Points
    328
    Par défaut
    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 ?
    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...
    La différence entre la théorie et la pratique est plus mince en théorie qu'en pratique

  6. #6
    Membre habitué
    Inscrit en
    Avril 2003
    Messages
    159
    Détails du profil
    Informations forums :
    Inscription : Avril 2003
    Messages : 159
    Points : 139
    Points
    139
    Par défaut
    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
    • 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
    Je sais pas si j'ai ete assez clair.....

  7. #7
    Futur Membre du Club
    Inscrit en
    Avril 2006
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 9
    Points : 6
    Points
    6
    Par défaut
    Citation Envoyé par BugFactory
    Qu'est-ce qui vous empêche d'utiliser le système de boucles avec un angle?
    mon niveau lamentable en trigo !

  8. #8
    Rédacteur/Modérateur

    Avatar de bouye
    Homme Profil pro
    Information Technologies Specialist (Scientific Computing)
    Inscrit en
    Août 2005
    Messages
    6 840
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : Nouvelle-Calédonie

    Informations professionnelles :
    Activité : Information Technologies Specialist (Scientific Computing)
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Août 2005
    Messages : 6 840
    Points : 22 854
    Points
    22 854
    Billets dans le blog
    51
    Par défaut
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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 de penser au tag quand 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

  9. #9
    Futur Membre du Club
    Inscrit en
    Avril 2006
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 9
    Points : 6
    Points
    6
    Par défaut
    merci bouye !

    quel temps fait il a Nouméa ?

  10. #10
    Rédacteur/Modérateur

    Avatar de bouye
    Homme Profil pro
    Information Technologies Specialist (Scientific Computing)
    Inscrit en
    Août 2005
    Messages
    6 840
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : Nouvelle-Calédonie

    Informations professionnelles :
    Activité : Information Technologies Specialist (Scientific Computing)
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Août 2005
    Messages : 6 840
    Points : 22 854
    Points
    22 854
    Billets dans le blog
    51
    Par défaut
    [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 si tu as trouvé solution à ton problème.
    Merci de penser au tag quand 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

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Verrouiller une ligne dans une table avec sql server
    Par benabdessamed dans le forum Développement
    Réponses: 30
    Dernier message: 03/10/2012, 12h49
  2. Réponses: 4
    Dernier message: 15/10/2009, 13h33
  3. [AJAX] Ajout de lignes dans une table avec Ajax
    Par Tententai dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 01/11/2007, 15h54
  4. Réponses: 4
    Dernier message: 02/06/2007, 12h35
  5. Réponses: 2
    Dernier message: 24/11/2006, 08h54

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo