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

C# Discussion :

Récupérer les couleur d'un chart [Débutant]


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé Avatar de thierry007
    Homme Profil pro
    Autodidacte
    Inscrit en
    Août 2006
    Messages
    876
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Autodidacte
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2006
    Messages : 876
    Par défaut Récupérer les couleur d'un chart
    Bonjour a la communauté

    Dans mon projet je crée un chart de type Pie. -> jusque là c'est bien
    Sur ma form j'ai un objet chart nommé Chart1 dans lequel j'ajoute une série nommée Serie1.
    Je le remplis de cette façon: voici le morceau de code qui a cette fonction:
    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
      Chart1.ChartAreas.Clear();
                            Chart1.Series.Clear();
                            Chart1.Titles.Clear();
     
                            //J'applique la palette de base                        
                            Chart1.ApplyPaletteColors();
     
                            // Creation Chart Area et instanciation
                            ChartArea chartArea1 = new ChartArea();
     
                            //Ajout espace chartarea1 sur le chartarea
                            Chart1.ChartAreas.Add(chartArea1);
     
                            // Creation de la serie et instanciation 
                            Series series1 = new Series("Cost");
     
                           //ajout du titre
                            Chart1.Titles.Add(TitreGraph);
     
                            //Remplissage serie1
                            for (int i = 0; i < ComposantName.GetUpperBound(0) - 1; i++)
                            {
                                    if (ComposantValue[i] > 0)
                                    {
                                            series1.Points.AddXY("", ComposantValue[i]);
     
                                    }
                            }
     
     
                            // Ajout series1 dans le chart1
                            Chart1.Series.Add(series1);
    Je souhaiterais maintenant récupérer les couleurs de toutes mes portions ( points). Mais google ne me comprend pas dans ma requête
    OU ai-je ratté quelques chose.

  2. #2
    Rédacteur/Modérateur

    Avatar de Jean-Philippe André
    Homme Profil pro
    Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Inscrit en
    Juillet 2007
    Messages
    14 682
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Canada

    Informations professionnelles :
    Activité : Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14 682
    Par défaut
    Salut,

    ne peux-tu pas arriver directement à la couleur de ton point, par exemple avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    series1.Points[0].Color = Color.Red
    Cycle de vie d'un bon programme :
    1/ ça fonctionne 2/ ça s'optimise 3/ ça se refactorise

    Pas de question technique par MP, je ne réponds pas

    Mes ouvrages :
    Migrer les applications VBA Access et VBA Excel vers la Power Platform
    Apprendre à programmer avec Access 2016, Access 2019 et 2021

    Apprendre à programmer avec VBA Excel
    Prise en main de Dynamics 365 Business Central

    Coffrets disponibles de mes ouvrages : https://www.editions-eni.fr/jean-philippe-andre
    Pensez à consulter la FAQ Excel et la FAQ Access

    Derniers tutos
    Excel et les paramètres régionaux
    Les fichiers Excel binaires : xlsb,

    Autres tutos

  3. #3
    Membre éprouvé Avatar de thierry007
    Homme Profil pro
    Autodidacte
    Inscrit en
    Août 2006
    Messages
    876
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Autodidacte
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2006
    Messages : 876
    Par défaut
    Ha bein c'est l'inverse qui m'intéresse car si je veux lire la couleur
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Color MyColor = new Color();
                            MyColor = series1.Points[0].Color;
     
                            Ou
     
                            string MyColor;
                            MyColor = series1.Points[0].Color.Name;
    j'arrive toujours a 0 ( zéro ). Quelques soit l'index de points.

    Et c'est là qu'est l'os pour l'instant

  4. #4
    Membre chevronné
    Avatar de nouanda
    Homme Profil pro
    Hobbyist
    Inscrit en
    Mai 2002
    Messages
    246
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Australie

    Informations professionnelles :
    Activité : Hobbyist

    Informations forums :
    Inscription : Mai 2002
    Messages : 246
    Par défaut
    Beh non en fait, c'est pas un os, et c'est documente:
    the Color property of an automatically assigned value will return Empty at this time.
    Le problème est que tu appelles ApplyPaletteColors AVANT d'avoir ajoute tes séries. Donc, ok, il applique une palette, mais sur rien du tout... Et ta série créée plus loin se voit affecter une couleur par défaut, non utilisable programmatiquement.
    Essaye de le faire après, tu devrais avoir plus de succès.

    Exemple de code: une form avec un chart1: change le commentaire sur ApplyPaletteColor (ligne 3 et 14) pour voir la différence.
    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
                InitializeComponent();
     
                //chart1.ApplyPaletteColors();
     
                var s = new System.Windows.Forms.DataVisualization.Charting.Series();
                s.Points.AddXY(0, 1);
                s.Points.AddXY(1, 2);
                s.Points.AddXY(2, 6);
                s.Points.AddXY(3, 4);
                s.Points.AddXY(4, 5);
     
                chart1.Series.Add(s);
     
                chart1.ApplyPaletteColors();
     
                foreach (var p in chart1.Series[0].Points)
                {
                    Console.WriteLine(p.Color.Name);
                    Console.WriteLine(p.Color.ToString());
                }

  5. #5
    Membre éprouvé Avatar de thierry007
    Homme Profil pro
    Autodidacte
    Inscrit en
    Août 2006
    Messages
    876
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Autodidacte
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2006
    Messages : 876
    Par défaut
    Bonjour Nouanda
    Merci d'intervenir

    voici le code adapter, mais le label1 reste vide. le chart lui est Ok

    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
     
                    private void Form1_Load(object sender, EventArgs e)
                    {
                            var s = new System.Windows.Forms.DataVisualization.Charting.Series();
                            s.Points.AddXY(0, 1);
                            s.Points.AddXY(1, 2);
                            s.Points.AddXY(2, 6);
                            s.Points.AddXY(3, 4);
                            s.Points.AddXY(4, 5);
     
                            chart1.Series.Add(s);
     
                            chart1.ApplyPaletteColors();
     
                            label1.Text = "";
     
                            foreach (var p in chart1.Series[0].Points)
                                    label1.Text += p.Color.ToString() + " - ";
     
     
                    }

  6. #6
    Membre chevronné
    Avatar de nouanda
    Homme Profil pro
    Hobbyist
    Inscrit en
    Mai 2002
    Messages
    246
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Australie

    Informations professionnelles :
    Activité : Hobbyist

    Informations forums :
    Inscription : Mai 2002
    Messages : 246
    Par défaut
    Voila qui est étrange... le même code me remplit bien un label. Je l'ai même reproduit avec deux séries pour être sure que chacune a une couleur différente après ApplyPaletteColors():
    Nom : Capture.PNG
Affichages : 349
Taille : 29,7 Ko
    Mets un point d’arrêt pour suivre les propriétés de ton label1. Peut-être qu'il contient les bonnes infos mais que ta Form n'est pas rafraîchie? Et remet les Console.WriteLine, pour être sur.

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

Discussions similaires

  1. Récupérer les couleurs d'une image
    Par benthebest dans le forum Android
    Réponses: 2
    Dernier message: 06/02/2012, 23h33
  2. Récupérer les informations d'un chart
    Par Dragna_x dans le forum Silverlight
    Réponses: 9
    Dernier message: 14/09/2010, 16h39
  3. récupérer les couleurs d'un pixel d'une image
    Par sys1 dans le forum Débuter
    Réponses: 12
    Dernier message: 29/07/2010, 13h56
  4. Réponses: 2
    Dernier message: 07/10/2007, 06h40
  5. Récupérer les couleurs dans un COLORREF
    Par Laranee dans le forum Windows
    Réponses: 2
    Dernier message: 29/10/2005, 22h57

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