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 :

Meilleure représentation graphique d'un jeu de données (empreinte d'un fichier) [Débutant]


Sujet :

C#

  1. #1
    Membre régulier Avatar de _KB_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mars 2006
    Messages
    110
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mars 2006
    Messages : 110
    Points : 92
    Points
    92
    Par défaut Meilleure représentation graphique d'un jeu de données (empreinte d'un fichier)
    Bonjour,


    Voilà mon problème.
    J'ai un jeu de données que je souhaite représenter un peu à la manière d'un défragmenteur de disque, à savoir plusieurs carrés rangés en lignes et en colonnes.

    Exemple :

    Nom : defrag.png
Affichages : 159
Taille : 75,1 Ko

    Chacune de ces données représentée par un carrée doit posséder une couleur selon certains critères et doit être cliquable (par exemple pour reprendre l'analogie avec le defragmenteur, une couleur pour un cluster occupé, une pour un libre etc...).

    Par ailleurs, j'aimerais que chaque carré soit cliquable pour accéder au détail concernant la donnée. Et éventuellement associer un ToolTip pour chacun (mais je peux m'en passer si c'est rédhibitoire).

    Comme je suis débutant en C# winforms, j'aimerais votre avis sur la meilleur approche à ce problème sachant que j'ai une contrainte de taille, j'ai un maximum de 3600 données à afficher.

    Ma première approche a été de créer dynamiquement des boutons et d'y associer un événement lors du clic.
    Malheureusement avec plusieurs milliers de contrôles à afficher, la solution n'est pas viable

    Sinon j'ai joué un peu avec un TableLayoutPanel mais je n'ai pas trouvé le moyen d'espacer les cellules pour "simuler" des carrés indépendants. En plus il faut déduire la cellule cliquée en fonction de la position du curseur et ce n'est pas très pratique pour moi.

    J'en suis à tenter de dessiner un rectangle dans un pictureBox mais je pense que ce sera le même problème qu'avec mes boutons...

    J'ai une solution de rechange, j'affiche les donnée dans un richTextBox. Pour le moment je différencie les données par une croix ou un point :
    ------------------------------------------------------------------------
    Empreinte du fichier:
    ------------------------------------------------------------------------

    [ 00:00 ] - XXXXXXXXXXXXXXXXXXXXXXXX.........XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX [ ]
    [ 01:00 ] - XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX [ ]
    [ 02:00 ] - XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX [ ]
    [ 03:00 ] - XXXXXXXXXXX.......XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX [ ]
    [ 04:00 ] - XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX [ ]

    Mais je peux y introduire de la couleur.
    Par contre je ne pourrai pas rendre la donnée cliquable...

    Je sèche un peu, toute piste est la bienvenue !

    Merci.
    Comme le disait Heisenberg « Chérie, j’ai garé la voiture, mais je sais plus où »

  2. #2
    Membre régulier Avatar de _KB_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mars 2006
    Messages
    110
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mars 2006
    Messages : 110
    Points : 92
    Points
    92
    Par défaut
    Bon à priori la méthode du dessin était la bonne.
    Je poste ici un brouillon de code pour ceux que ça intéressent.

    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
    36
     
            private const int A = 12; /* côté en pixel d'un carré représentant un histo */
            private const int PADDING = 1; /* espace entre 2 carrés représentants un histo */
     
            private void NewMethod()
            {
                InitializeComponent();
     
                var bitmap = new Bitmap(pictureBox1.Width, pictureBox1.Height);
                using (var graphics = Graphics.FromImage(bitmap))
                {
                    for (int i = 0; i < 256; ++i)
                        for (int j = 0; j < 256; ++j)
                        {
                            var z = i ^ j;
                            graphics.FillRectangle(new SolidBrush(Color.FromArgb(z, z, z)),
                                i * pictureBox1.Width / 256, j * pictureBox1.Height / 256.0f, pictureBox1.Width / 256.0f - 1, pictureBox1.Height / 256.0f - 1);
     
                        }
     
                    for(int i = 0; i < 60; ++i)
                        for (int j = 0; j < (3600/60); ++j)
                        {
                            int x = A * i;
                            int y = A * j;
                            var c = (i + j) % 3 == 0 ? Color.Blue : Color.Orange;
                            graphics.FillRectangle(new SolidBrush(c), x, y, A - PADDING, A - PADDING);
                        }
                }
                pictureBox1.Image = bitmap;
    }
     
    private void pictureBox1_MouseClick(object sender, MouseEventArgs e)
            {
                MessageBox.Show(string.Format("({0}; {1})", e.X /A, e.Y /A));
            }
    Et le résultat :

    Nom : damier.png
Affichages : 130
Taille : 56,8 Ko
    Comme le disait Heisenberg « Chérie, j’ai garé la voiture, mais je sais plus où »

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

Discussions similaires

  1. [Images] Meilleur librairie dédiée à la représentation graphique de données
    Par redoran dans le forum Bibliothèques et frameworks
    Réponses: 2
    Dernier message: 29/05/2012, 11h00
  2. Réponses: 13
    Dernier message: 09/11/2011, 08h16
  3. coder un petit jeu : meilleurs biblios graphiques ?
    Par Chatbour dans le forum API graphiques
    Réponses: 3
    Dernier message: 21/12/2007, 00h48
  4. export base donnée pour représentation graphique des tables
    Par calitom dans le forum Décisions SGBD
    Réponses: 4
    Dernier message: 04/11/2006, 13h27

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