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

Composants graphiques Android Discussion :

Dessin canvas : pige pas !


Sujet :

Composants graphiques Android

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Candidat au Club
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Février 2009
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Chef de projet en SSII

    Informations forums :
    Inscription : Février 2009
    Messages : 3
    Par défaut Dessin canvas : pige pas !
    Bonsoir tout le monde,
    je suis devant un problème que je n'arrive pas à piger ...
    J'ai besoin de faire du dessin "précis" sur un canvas, cad au pixel près...

    Si je veux faire un rectangle de 120x5 pixels, aux coordonnées x0,y0 je pensais faire simple cad :
    drawRect(0,0,120,5)
    Or le rendu est tellement petit sur mobile, que je me suis interroger... J'ai pris en compte la densité d'affichage
    getResources().getDisplayMetrics().density (dans mon cas 3)
    je multiplie donc les cotes par 3
    drawRect(0,0,360,15)
    ce qui me donne une fois le screen shot du mobile rappatrié sous gimp, un rectangle de 128x6

    Comment faut-il s'y prendre pour faire du dessin sans avoir à bidouiller les côtes ???
    Je doit réussir à faire l'équivalent en taille de l'image jointe.

    Merci de vos conseils
    Images attachées Images attachées  

  2. #2
    Candidat au Club
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Février 2009
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Chef de projet en SSII

    Informations forums :
    Inscription : Février 2009
    Messages : 3
    Par défaut
    Je me répond à moi même pour essayer de faire avancer le truc.
    Ca ne serait pas un problème de conversion entres pixel / dpi ?
    Ou bien utiliser densityDpi à la place de density ?

    je cherche...

  3. #3
    Modérateur
    Avatar de grunk
    Homme Profil pro
    Lead dév - Architecte
    Inscrit en
    Août 2003
    Messages
    6 693
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Lead dév - Architecte
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2003
    Messages : 6 693
    Par défaut
    Bonjour,

    sur le canvas le dessin se fait en pixel.
    Comme tu l'as vu il faut donc multiplier par la densité et éventuellement le ratio de l'écran si tu veux garder toujours le même aspect quelque soit l'appareil.

    Pour ton problème de dimension pas tout à fait exact , tu peux essayer de désactiver l'antialiasing.

    Après il est peut être aussi possible que la densité ne soit pas tout à fait égale à 3 dans la réalité ...
    Pry Framework php5 | N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  4. #4
    Candidat au Club
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Février 2009
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Chef de projet en SSII

    Informations forums :
    Inscription : Février 2009
    Messages : 3
    Par défaut
    Merci de ta réponse.
    J'aimerai que la taille soit la même quelque soit l'écran.

    Je pense me baser sur ces méthodes de conversion

    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
    21
    22
    23
    24
    25
    26
    27
    /**
     * This method converts dp unit to equivalent pixels, depending on device density. 
     * 
     * @param dp A value in dp (density independent pixels) unit. Which we need to convert into pixels
     * @param context Context to get resources and device specific display metrics
     * @return A float value to represent px equivalent to dp depending on device density
     */
    public static float convertDpToPixel(float dp, Context context){
        Resources resources = context.getResources();
        DisplayMetrics metrics = resources.getDisplayMetrics();
        float px = dp * (metrics.densityDpi / 160f);
        return px;
    }
     
    /**
     * This method converts device specific pixels to density independent pixels.
     * 
     * @param px A value in px (pixels) unit. Which we need to convert into db
     * @param context Context to get resources and device specific display metrics
     * @return A float value to represent dp equivalent to px value
     */
    public static float convertPixelsToDp(float px, Context context){
        Resources resources = context.getResources();
        DisplayMetrics metrics = resources.getDisplayMetrics();
        float dp = px / (metrics.densityDpi / 160f);
        return dp;
    }

Discussions similaires

  1. dessin sur panel pas stable
    Par Dikoudogo dans le forum Graphisme
    Réponses: 1
    Dernier message: 26/10/2008, 22h27
  2. Entre Paint et PaintComponent y a un truc que je pige pas?
    Par doul21 dans le forum Débuter avec Java
    Réponses: 6
    Dernier message: 11/04/2008, 10h17
  3. Réponses: 2
    Dernier message: 11/02/2008, 22h02
  4. Dessiner, c'est pas gagner.
    Par melonmaudic dans le forum Flash
    Réponses: 3
    Dernier message: 15/12/2006, 10h09

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