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

Bibliothèques et frameworks PHP Discussion :

[GD] Effet 3D sur un graphique


Sujet :

Bibliothèques et frameworks PHP

  1. #1
    Membre éprouvé
    Avatar de amoiraud
    Homme Profil pro
    Développeur Web
    Inscrit en
    Octobre 2006
    Messages
    606
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Octobre 2006
    Messages : 606
    Points : 1 057
    Points
    1 057
    Par défaut [GD] Effet 3D sur un graphique
    Bonjour à tous,
    je travaille actuellement dans le cadre de mon boulot sur un back office dans lequel j'ai plusieurs pages de tests.
    Dans une de ses pages qui concerne les stats de résiliation, j'ai créé un graphique en batons en GD (en fait je l'avais déjà fais pour un autre back office j'ai simplement repris le code) car j'aime bien créer mes propres graphiques vu que souvent les librairies permettent moins de liberté de création.
    Voici le rendu final de l'image :



    Les battons de chaque FAI sont crée avec la fonction ImageFilledRectangle pour le rectangle principal et 2 ImageFilledPolygon pour l'effet 3D, mais si on regarde l'image de plus près on peut voir que la jonction entre les 2 polygones gache un peu l'effet, pourtant les 2 polygons sont censés se regrouper au même point (le coin supérieur droit du rectangle).

    Voici le code du rectangle de chaque FAI :

    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
    28
    29
    30
    31
    32
    33
    34
    35
     
    //Coordonnées Alice :
    $x1['Alice'] = 51;
    //La hauteur du rectangle est calculé en divisant le nombre de résiliations d'Alice divisé par le plus grand nombre de résiliations du mois multiplié par la hauteur maximum du graphique :
    $y1['Alice'] = 298 - (($tab_result['Alice'] / $max) * 250);
    $x2['Alice'] = 93;
    $y2['Alice'] = 298;
     
    //Le tableau $points3d correspond au polygon du haut (le plus clair) :
    $points3d['x1'] = $x1['Alice'];
    $points3d['y1'] = $y1['Alice'];
    $points3d['x2'] = $x1['Alice'] + 5;
    $points3d['y2'] = $y1['Alice'] - 5;
    $points3d['x3'] = $x2['Alice'] + 5;
    $points3d['y3'] = $y1['Alice'] - 5;
    $points3d['x4'] = $x2['Alice'];
    $points3d['y4'] = $y1['Alice'];
    $coord3d['Alice'] = array($points3d['x1'], $points3d['y1'], $points3d['x2'], $points3d['y2'], $points3d['x3'], $points3d['y3'], $points3d['x4'], $points3d['y4']);
     
    //Le tableau $points3d2 correspond au polygon de droite (le plus sombre) :
    $points3d2['x1'] = $x2['Alice'];
    $points3d2['y1'] = $y1['Alice'];
    $points3d2['x2'] = $x2['Alice'] + 5;
    $points3d2['y2'] = $y1['Alice'] - 5;
    $points3d2['x3'] = $x2['Alice'] + 5;
    $points3d2['y3'] = $y2['Alice'];
    $points3d2['x4'] = $x2['Alice'];
    $points3d2['y4'] = $y2['Alice'];
    $coord3d2['Alice'] = array($points3d2['x1'], $points3d2['y1'], $points3d2['x2'], $points3d2['y2'], $points3d2['x3'], $points3d2['y3'], $points3d2['x4'], $points3d2['y4']);
     
    //Création du batton d'alice :
    ImageFilledRectangle($image, $x1['Alice'], $y1['Alice'], $x2['Alice'], $y2['Alice'], $vert);
    ImageFilledPolygon ($image, $coord3d['Alice'], 4, $vertclair);
    ImageFilledPolygon ($image, $coord3d2['Alice'], 4, $vertfonce);
    ImageString($image, 2, 60, 305, "Alice", $vertfonce);
    Quelqu'un à une idée à me proposer pour corriger l'accro du coin supérieur droit ?
    Merci d'avance


    Les boutons et existent, servez-vous en

  2. #2
    Membre confirmé
    Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2008
    Messages
    504
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Décembre 2008
    Messages : 504
    Points : 470
    Points
    470
    Par défaut
    Tu veux parler du micropixel en trop qui sert d'origine au trait partant du coin supérieur droit et faisant la jonction entre la couleur clair et la couleur foncé ?

    T'es super exigeant :p

    Pourquoi ne pas tout simplement faire partir ton polygone de $y-1 ?

  3. #3
    Membre éprouvé
    Avatar de amoiraud
    Homme Profil pro
    Développeur Web
    Inscrit en
    Octobre 2006
    Messages
    606
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Octobre 2006
    Messages : 606
    Points : 1 057
    Points
    1 057
    Par défaut
    Citation Envoyé par comode Voir le message
    Tu veux parler du micropixel en trop qui sert d'origine au trait partant du coin supérieur droit et faisant la jonction entre la couleur clair et la couleur foncé ?

    T'es super exigeant :p

    Pourquoi ne pas tout simplement faire partir ton polygone de $y-1 ?
    Oui je parle bien de ca, et c'est vrai que je suis exigeant mais faut admettre que ca fais pas beau ^^
    J'ai essayé plusieurs combinaisons dont le $y-1 mais la ca déforme carrément le trait du polygon et c'est encore plus moche, j'ai aussi essayé de générer le polygon le plus sombre avant le plus clair mais c'est pas mieux
    Tant pis jme contenterai de ça au pire, merci quand même


    Les boutons et existent, servez-vous en

  4. #4
    Membre confirmé
    Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2008
    Messages
    504
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Décembre 2008
    Messages : 504
    Points : 470
    Points
    470
    Par défaut
    En fait, il faudrait mettre le $y-1 a l'origine et à l'arrivé de ton point si tu veux pas déformer ton trait (pas d'anti alliasing) de sorte a gardé une relation x/y = 1...

  5. #5
    Membre éprouvé
    Avatar de amoiraud
    Homme Profil pro
    Développeur Web
    Inscrit en
    Octobre 2006
    Messages
    606
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Octobre 2006
    Messages : 606
    Points : 1 057
    Points
    1 057
    Par défaut
    Effectivement ca rend déjà mieux, merci à toi


    Les boutons et existent, servez-vous en

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

Discussions similaires

  1. Effet de zoom sur un graphique
    Par enicnath dans le forum R
    Réponses: 2
    Dernier message: 26/02/2018, 09h11
  2. Effet Glow sur un Objet Graphique
    Par jeffray03 dans le forum Langage
    Réponses: 9
    Dernier message: 22/07/2008, 18h07
  3. [MFC Visual C++]conseil sur affichage graphiques
    Par C++beginner dans le forum MFC
    Réponses: 6
    Dernier message: 10/01/2006, 06h47
  4. [VB.Net] Comment effacer des traits sur un graphique ?
    Par bert24 dans le forum Windows Forms
    Réponses: 2
    Dernier message: 27/09/2005, 14h20
  5. [CR 8.5] Attribution couleur sur un graphique
    Par Silvinho42 dans le forum SAP Crystal Reports
    Réponses: 4
    Dernier message: 30/06/2005, 15h00

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