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

Windows Presentation Foundation Discussion :

Afficher image dans différents grid


Sujet :

Windows Presentation Foundation

  1. #1
    Membre habitué
    Femme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Avril 2013
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Anguilla

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Avril 2013
    Messages : 8
    Par défaut Afficher image dans différents grid
    bonjour à tous,

    Je voudrais afficher des images composées elle mêmes d'autres images, la fonction suivante se charge de créé une Image et la retourne:

    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
    public Image ComputeImage(double width, double positionLeft, double positionTop)
            {
     
                Image myImage3 = new Image();
                BitmapImage bi3 = new BitmapImage();
                bi3.BeginInit();
                bi3.UriSource = new Uri(@"H:\Documents\Visual Studio 2010\Projects\VisualReport\Images\count_bar_dark.png", UriKind.Absolute);
                bi3.CacheOption = BitmapCacheOption.OnLoad;
                bi3.EndInit();
                myImage3.Stretch = Stretch.Fill;
                myImage3.Source = bi3;
                myImage3.Width = width;
                //change pas
                myImage3.Height = 8;
                //
                var mR = 300 - (width + positionLeft);
     
                System.Windows.Thickness oMargin = new Thickness(positionLeft, positionTop, mR, 0);
                myImage3.Margin = oMargin;
                return myImage3;
     
            }
    l'objet de type Image est retourné à la fonction qui elle se charge de l'afficher :
    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
    37
    38
    39
    40
    41
    42
    public void MeasureImage()
            {
                double begin;
                double end;
                double width;
                int cpt=0;
                Image imageToDisplay=null;
                double totalDuration = (this.data.Timings.list[0].end - this.data.Timings.list[0].begin);
                double firstPointPosition=0;
                //Display the first image with a width of 300
                int leftPosition = 0;
                int positionTop = 0;
                int totalWidth=300;
                 ComputeImage(totalWidth,leftPosition,positionTop);
                //display the sub images based on the first image
                foreach (Timing time in this.data.Timings.list)
                {
                    foreach (Timing sub_time in time.list)
                    {
                        positionTop += 20;
                        end = sub_time.end;
                        begin = sub_time.begin;
                        width = ((end - begin) * 300) / totalDuration;
                        firstPointPosition = ((sub_time.begin * totalWidth) / totalDuration);
                        imageToDisplay= ComputeImage(width, firstPointPosition, positionTop);
                    }
                    switch(cpt)
                    {
                        case 0: displayImageGuess(imageToDisplay);
                            break;
                        case 1: displayImageCreate(imageToDisplay);
                            break;
                        case 2: displayImageBuild(imageToDisplay);
                            break;
                        case 3: displayImageApply(imageToDisplay);
                            break;
                    }
                        cpt++;
     
                }
     
            }
    Le switch permet d'envoyer l'image à la bonne fonction qui contient à chaque fois le nom du grid (il y en à 4) :
    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
    private void displayImageGuess(Image image) 
            {
                GuessTiming.Children.Add(image);
            }
     
            private void displayImageCreate(Image image)
            {
                CreateTiming.Children.Add(image);
            }
            private void displayImageBuild(Image image)
            {
                BuildTiming.Children.Add(image);
            }
            private void displayImageApply(Image image)
            {
                ApplyTiming.Children.Add(image);
            }
    Au final rien ne s'affiche pourtant je pense que ma logique est correcte :s

    Je vous remercie d'avance pour votre aide

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    206
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 206
    Par défaut
    Bonjour,

    quelques questions pour bien comprendre :

    dans ta methode "MeasureImage"
    A quoi te sert ton 1er :
    ComputeImage(totalWidth,leftPosition,positionTop);
    il n'est affecté a aucune variable et a priori il ne sert a rien.

    Et ensuite, tu as ton Switch apres ton for each, du coup, tu n'a qu'un seul imageToDisplay qui sera utilisé ou en tout cas le dernier. Je comprend pas bien a quoi il sert ton 2eme foreach ?

  3. #3
    Membre habitué
    Femme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Avril 2013
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Anguilla

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Avril 2013
    Messages : 8
    Par défaut
    Merci de ta réponse,

    Le premier compute image fait un appel a la fonction ComputeImage() qui se charge de créé la toute première "sous-image" qui doit avoir une width fixe de 300.

    en fait , l'image à affiché est une drande bar sub-divisé en sous barre comme ici
    imageIdeacuteal_zpsa1599240.png Photo by papotame | Photobucket

    Le 1e foreach boucle dans une liste d'objet "Timings" qui contient lui méme une autre list d'ou le 2e foreach. Le premier foreach bouche 4 fois pour les 4 grid et le 2e foreach boucle autant de fois qu'il y a de sous barra à affiché.

    j’espère avoir été clair, je suis à a ta disposition pour d'autre question

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    206
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 206
    Par défaut
    quelles sont les images qui ne s'affichent pas (et celles qui s'affichent) ?

    Mais je reviens sur le 2ème foreach :
    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
     
    foreach (Timing sub_time in time.list)
                    {
                        positionTop += 20;
                        end = sub_time.end;
                        begin = sub_time.begin;
                        width = ((end - begin) * 300) / totalDuration;
                        firstPointPosition = ((sub_time.begin * totalWidth) / totalDuration);
                        imageToDisplay= ComputeImage(width, firstPointPosition, positionTop);
                    }
                    switch(cpt)
                    {
                        case 0: displayImageGuess(imageToDisplay);
                            break;
                        case 1: displayImageCreate(imageToDisplay);
                            break;
                        case 2: displayImageBuild(imageToDisplay);
                            break;
                        case 3: displayImageApply(imageToDisplay);
                            break;
                    }
    Donc il boucle le foreach et seulement après il insert l'image a partir du switch. c'est ça ?

  5. #5
    Membre habitué
    Femme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Avril 2013
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Anguilla

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Avril 2013
    Messages : 8
    Par défaut
    Une fois que le 2é foreach finis de bouclé, l'image est envoyé au bon grid grace au switch. Actuellement il n'y qu'une image qui s'affiche dans chaque grid ...

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    206
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 206
    Par défaut
    Tu ne m'as dit qu'elles sont les images qui s'affichent et celles qui ne s'affichent pas ?

    A quoi ca sert de faire un foreach si ce n'est que pour récupérer la dernière image ?

  7. #7
    Membre habitué
    Femme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Avril 2013
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Anguilla

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Avril 2013
    Messages : 8
    Par défaut
    J'ai trouvé la solution à mon probléme, en fait il fallait simplement que je déplace le switch à l'intérieur du 2e foreach, tout en gardant le compteur dans le 1e foreach. Ainsi toutes les images été affiché une par une dans le bon grid.

    Merci à toi pour ton aide

  8. #8
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    206
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 206
    Par défaut
    c'est bien ce qu'il me semblait

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

Discussions similaires

  1. Afficher Images dans différentes Jframes
    Par de393 dans le forum Agents de placement/Fenêtres
    Réponses: 5
    Dernier message: 07/02/2013, 19h16
  2. Afficher une image dans un grid sous condition
    Par Devlin111 dans le forum C#
    Réponses: 0
    Dernier message: 31/05/2012, 14h02
  3. Problème d'affiche images dans un gridview
    Par sissi25 dans le forum ASP.NET
    Réponses: 7
    Dernier message: 10/10/2007, 09h48
  4. afficher image dans jrame
    Par mmb04 dans le forum AWT/Swing
    Réponses: 1
    Dernier message: 19/04/2007, 23h54
  5. [struts] Afficher image dans JSP a partir d'un byte[]
    Par igloof dans le forum Struts 1
    Réponses: 1
    Dernier message: 16/05/2006, 12h11

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