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

2D Java Discussion :

[java2D] coordonnées de drawPolygon & drawImage


Sujet :

2D Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de orelero
    Étudiant
    Inscrit en
    Novembre 2004
    Messages
    389
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2004
    Messages : 389
    Par défaut [java2D] coordonnées de drawPolygon & drawImage
    Salut,
    J'ai un problème: je veux dessiner une image et l'encadrer avec drawPolygon. Ca ne fonctionne pas alors que l'opération est simple .
    Voilà l'illustration :

    et le code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    graphics2d.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_OVER, .8f));
    						graphics2d.setColor(Color.GREEN);
    						int[] xVertex = {0,+36,+36,0 ,0};
    						int[] yVertex = {0,0  ,36 ,36,0};
    						graphics2d.drawPolygon(new Polygon(xVertex,yVertex,5));
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    graphics2d.drawImage(myImage,0,0,null);
    L'image, je l'ai maintes fois vérifiée, fait du 35X35 et est elle meme encadrée de bleu. Si on fait un zoom, on voit bien que le cadre vert qui représente le polygone, est décalé d'un pixel vers la droite .
    Ca m'étonnerait que ça soit un bug. Si quelqu'un voit la source du problème
    Merci !!!

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

    Informations forums :
    Inscription : Mars 2006
    Messages : 269
    Par défaut
    Je poste l'esprit encore un peu embrumé, alors c'est juste une petite reflexion pas forcément lucide...
    Ton rectangle, tu lui donnes les coordonnées (0,0);(0;36);(36,36);(36,0) dans le sens trigo. Donc il y a 37 pixels de largeur. Il contient une image de la taille 35*35, mais seulement si tu la places en (1,1). Sinon, tu grattes le pixel de la bordure bleue de ton image et elle se retrouve décalée, non ?

    Mais p'tet ben que je vois pas clair

  3. #3
    Membre éclairé Avatar de orelero
    Étudiant
    Inscrit en
    Novembre 2004
    Messages
    389
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2004
    Messages : 389
    Par défaut
    Merci dazz d'avoir répondu,
    je n'ai pas trop saisi le principe du sens trigo .
    En fait le screenshot que j'ai pris n'ai pas bon puisqu'on voit pas tous les cotés du rectangle vert.
    En voilà un autre:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    g2d.drawImage(myImage,1,1,null);
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    int[] xVertex = {1,+36,+36,1 ,1};
    int[] yVertex = {1,1,36 ,36,1};
    g2d.drawPolygon(new Polygon(xVertex,yVertex,5));
    Et là c'est vraiment bizarre, j'ai juste translaté leurs coordonnées de 1 en x et y, et le décalage des pixels s'effectue en x et en y (alors que l'autre c'etait qu'un decalage en x) .
    J'avoue que j'hallucine.
    Autre chose : le pixel d'en haut à droite devrait être vert

  4. #4
    Rédacteur/Modérateur

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

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

    Informations forums :
    Inscription : Août 2005
    Messages : 6 901
    Billets dans le blog
    54
    Par défaut
    Ce n'est pas exactement la reponse que tu cherches mais as-tu essaye d'activer l'antialiasing ou d'autres indices de rendu ? Ou de faire varier le Stroke du trait ? Ou d'utiliser un Rectangle, Rectangle2D ou une autre Shape a la place de drawPolygon() ?
    As-tu recherche dans la bugdatabase chez Sun a propos d'un bug de drawPolygon() (oui il est possible que la methode se comporte mal) ?

    Enfin l'image est un poil rikiki on a du mal a voir le probleme.
    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

  5. #5
    Membre éclairé Avatar de orelero
    Étudiant
    Inscrit en
    Novembre 2004
    Messages
    389
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2004
    Messages : 389
    Par défaut
    Salut Bouye, j'ai mis à jour le screenshot, et on voit bien qu'en plus le pixel de l'angle d'en haut à droite n'est pas dessiné
    J'ai essayé de dessiner en utilisant g2d.draw(new Rectangle...
    ==> On obtient le même résultat.
    Pour le stroke, je l'ai jamais modifié et c'est donc celui par défaut.
    Dans la bug database, je n'ai pas trouvé de trace du problème .
    En ce qui concerne le rendu, je l'ai fait varier (p-e pas toutes les combinaisons possibles mais j'en ai essayé plein)...Ca change rien.

    Je vais poster sur le javaGame forum même si ça bouge pas trop en ce moement

    edit : j'ai quand même essayé avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    g2d.setStroke(new BasicStroke( 1f ));
    ça ne change rien

  6. #6
    Membre éclairé Avatar de orelero
    Étudiant
    Inscrit en
    Novembre 2004
    Messages
    389
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2004
    Messages : 389
    Par défaut
    GROSSE et MAUVAISE surprise : le coupable c'est l'activation du pipeline openGL ... Quand je le désactive ça marche nickel (mais bien sûr c'est plus lent).
    Je vais devoir tout "optimiser" pour m'en passer vu que ça n'a pas du tout l'air d'être au point .

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

Discussions similaires

  1. [Débutant] Coordonnées Pointeur pour DrawImage - Drag and drop
    Par Audrey43 dans le forum VB.NET
    Réponses: 7
    Dernier message: 29/02/2012, 20h09
  2. [appli][Java2D]Pb scintillement Animation
    Par ddams dans le forum 2D
    Réponses: 2
    Dernier message: 25/04/2003, 11h57
  3. Récuperer les coordonnées d'un vecteur
    Par kerzut dans le forum OpenGL
    Réponses: 5
    Dernier message: 15/04/2003, 11h51
  4. Coordonnées du curseur ???
    Par LE CHAKAL dans le forum Composants VCL
    Réponses: 3
    Dernier message: 27/08/2002, 17h28

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