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 :

problème avec la fonction drawRect()...


Sujet :

2D Java

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Août 2005
    Messages
    411
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2005
    Messages : 411
    Points : 192
    Points
    192
    Par défaut problème avec la fonction drawRect()...
    bonjour,

    voici le problème :

    je souhaite utiliser la fonction drawRect() afin de dessiner un rectangle dans la méthode paint() mais il est impossible de mettre des éléments de type float, juste de type int.

    Comment peut-on faire sans caster x et y ? existe-il une autre fonction pour faire ca et qui permet de mettre des coordonnées décimales ?


    merci

  2. #2
    Membre chevronné
    Avatar de afrikha
    Profil pro
    Étudiant
    Inscrit en
    Août 2005
    Messages
    1 600
    Détails du profil
    Informations personnelles :
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2005
    Messages : 1 600
    Points : 2 208
    Points
    2 208
    Par défaut
    je crois qu'il n'y a pas de coordonnées decimales.Les coordonnées sont des pixels et on ne peut pas deviser un pixel.
    Je ne suis pas tout à fait sùr de cela ,verifie tout de mème on ne sait jamais

  3. #3
    Rédacteur/Modérateur

    Avatar de bouye
    Homme Profil pro
    Information Technologies Specialist (Scientific Computing)
    Inscrit en
    Août 2005
    Messages
    6 867
    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 867
    Points : 22 921
    Points
    22 921
    Billets dans le blog
    52
    Par défaut
    Sisi ca existe, mais il va te falloir passer par Java2D plutot que par les primitives de la classe Graphics.

    Il te faut donc un Graphics2D (suffit de caster un Graphics normal) et une instance de la classe Rectangle2D (package java.awt.geom) a savoir Rectangle (coordonenes entieres ; dans le package java.awt), Rectangle2D.Double ou Rectangle2D.Float.

    Ensuite il est vrai que comme ca tu ne verras pas une grande difference sur le rendu si tu utilises des coordonnees flottantes ou double. Il te faudra problement modifier les indices de rendu (nottement l'anti-alias, evidement ca ralentit un peu les chose) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    graphics.setRenderingHint(RenderingHints.KEY_RENDERING, RenderingHints.VALUE_RENDER_QUALITY);
    graphics.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
    Alors pourquoi on peut utiliser des coordonnees flottantes alors qu'il y a un nombre entier de pixels sur l'ecran :

    - d'une part car c'est souvent mieux et plus precis de travailler avec des nombres reels pour ses calculs a soit (note : evidement les double sont plus precis mais utilisent plus de memoire).

    - et surtout car un Graphics est independant du peripherique d'affichage (ecran, imprimante, image, ...) et qu'un certains nombre de transformations (scale, shear, rotate, .....) peuvent etre appliquees qui font qu'effectivement on puisse se retrouver entre 2 pixels (independement du fait que ca soit visible ou pas a l'ecran).

    - un pixel est une unite logique : sur certains ecrans (ou a certaines resolution) un pixel logique peut-etre constitue en fait de plusieurs photosfores (je ne suis pas sur du terme la) , bref plusieurs pixels physiques/reels (ce qui fait que oui l'ecran peut afficher un point situe a une coordonnee flottante).

    - c'est encore mieux sur les peripheriques recents LCD puisque dans certains cas (lissage des polices de type ClearType ou comme dans Java 6) on peut carrement travailler au niveau du sous-pixel physique (lui-meme constitue d'un photosfore rouge, vert et bleu).

    - enfin au niveau logiciel l'ajout de l'antialias permet de simuler le fait d'etre entre 2 pixels en modifiant subtilement la couleur du rendu pour tromper l'oeuil et adoucir, entre autre, les effets d'escalier.

Discussions similaires

  1. Problème avec une fonction date.
    Par kmayoyota dans le forum ASP
    Réponses: 8
    Dernier message: 09/09/2004, 12h33
  2. Problème avec la fonction findfirst ()
    Par Angelico dans le forum Windows
    Réponses: 3
    Dernier message: 05/08/2004, 20h40
  3. [Requete SQL en VBA] Problème avec la fonction FLOOR
    Par zubral dans le forum Langage SQL
    Réponses: 4
    Dernier message: 13/07/2004, 13h24
  4. Problème avec les fonctions
    Par jvachez dans le forum PostgreSQL
    Réponses: 1
    Dernier message: 13/01/2004, 12h06
  5. [Postgresql]Problème avec les fonctions ...
    Par fet dans le forum Requêtes
    Réponses: 4
    Dernier message: 02/10/2003, 09h04

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