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 :

Changer l'image d'un control Image avec un stream


Sujet :

Windows Presentation Foundation

  1. #1
    Membre du Club Avatar de Takumi
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juin 2009
    Messages
    163
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Juin 2009
    Messages : 163
    Points : 62
    Points
    62
    Par défaut Changer l'image d'un control Image avec un stream
    Bonjour,

    Je développe un lecteur mutltimedia qui en premier lieu était sous VS 2003 en winfows forms. Puis je l'ai passé sous VS 2008 en WPF. Je rencontre un problème pour changer le contenu d'un control Image. Sous VS 2003 lorsque j'ouvrais une chanson, je mettais la pochette de l'album dans une PictureBox avec le code suivant:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    TagLib.File file = TagLib.File.Create(this.currentPlay.URL);
                if (file.Tag.Pictures.Length > 0)
                {
                    Byte[] bin = file.Tag.Pictures[0].Data.Data;
                    Image.GetThumbnailImageAbort callBack = new Image.GetThumbnailImageAbort(ThumbnailCallback);
                    this.pbCover.Image = Image.FromStream(new MemoryStream(bin)).GetThumbnailImage(this.pbCover.Width, this.pbCover.Height, callBack, System.IntPtr.Zero);
                }
    Le problème est que ce code ne fonctionne pas sous WPF. Pour changer la source de mon control Image en paramètre il attend une URI en voulant faire monImage.source().

    Ma question est comment puis-je faire pour changer mon image comme je le faisait auparavant, ou du moins une équivalence.

    Je vous remercie d'avance.

  2. #2
    Rédacteur
    Avatar de Thomas Lebrun
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    9 161
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 9 161
    Points : 19 434
    Points
    19 434
    Par défaut
    Heu... pas tout compris là... Tu veux charger et afficher une image ?

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 8
    Points : 9
    Points
    9
    Par défaut
    est-ce que ce bout de code répond à ton besoin ?

    partie XAML
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
            <Image x:Name="Img" Width="200" Height="200"/>
    partie C#
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
                using (WebClient client = new WebClient())
                {
                    using (MemoryStream stream = new MemoryStream(client.DownloadData(@"http://www.developpez.net/template/images/logo.gif")))
                    {
                        Img.Source = BitmapFrame.Create(stream, BitmapCreateOptions.None, BitmapCacheOption.OnLoad);
                    }
                }

  4. #4
    Membre du Club Avatar de Takumi
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juin 2009
    Messages
    163
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Juin 2009
    Messages : 163
    Points : 62
    Points
    62
    Par défaut
    Bonsoir,

    Désolé Thomas d'avoir été peu clair.

    En faite mon application utilise la librairie taglib sharp pour pouvoir récupèrer les informations ID3Tag dans les fichiers musicaux que je lis. Cette lib me sert surtout et pour le moment uniquement à récuperer les informations sur la pochette d'album. Mais il se trouve que cette pochette d'album soit sous forme de byte. Donc quand j'était encore sous VS 2003, je convertissais cela en memoryStream puis en Bitmap avant de l'insérer dans ma PictureBox. Je voulais juste refaire la même chose mais de manière à ce que ça marche sous WPF comme certaine choses ont changé.

    Mais j'ai finalement trouvé mon bonheur:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    TagLib.File file = TagLib.File.Create(this.currentSong.URL);
                if (file.Tag.Pictures.Length > 0)
                {
                    Byte[] bin = file.Tag.Pictures[0].Data.Data;
                    MemoryStream stream = new MemoryStream(bin);
                    BitmapImage cover = new BitmapImage();
                    cover.BeginInit();
                    cover.StreamSource = stream;
                    cover.EndInit();
                    this.imageCover.Source = cover;
                }

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

Discussions similaires

  1. Changer d'image dans un control Image
    Par Jon Shannow dans le forum Général VBA
    Réponses: 2
    Dernier message: 30/03/2015, 07h35
  2. Réponses: 7
    Dernier message: 18/11/2011, 02h05
  3. Réponses: 0
    Dernier message: 30/11/2009, 09h50
  4. Datareport changer la propriété picture d'un controle image
    Par Acrobat dans le forum VB 6 et antérieur
    Réponses: 11
    Dernier message: 18/08/2006, 19h01
  5. [VB]déplacement d'un controle image avec la méthode move
    Par marco62118 dans le forum VB 6 et antérieur
    Réponses: 14
    Dernier message: 22/03/2006, 19h03

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