web-dev-qa-db-fra.com

Changer la source de l'image dans le code derrière - Wpf

J'ai besoin de définir dynamiquement la source de l'image, veuillez noter que mon image se trouve quelque part sur le réseau, voici mon code

BitmapImage logo = new BitmapImage();
logo.BeginInit();
logo.UriSource = new Uri(@"pack://application:,,,\\myserver\\folder1\\Customer Data\\sample.png");
logo.EndInit(); // Getting the exception here
ImageViewer1.Source = logo;

Exception:

Le préfixe URI n'est pas reconnu

37
Muhammad Akhtar

Vous avez juste besoin d'une ligne:

ImageViewer1.Source = new BitmapImage(new Uri(@"\myserver\folder1\Customer Data\sample.png"));
62
timtos

Aucune des solutions ci-dessus n'a fonctionné pour moi. Mais cela a fait:

myImage.Source = new BitmapImage(new Uri(@"/Images/foo.png", UriKind.Relative));
64
Manindra Moharana

La syntaxe du pack que vous utilisez ici est pour une image qui est contenue en tant que ressource dans votre application, pas pour un fichier en vrac dans le système de fichiers.

Vous voulez simplement passer le chemin réel à l'UriSource:

logo.UriSource = new Uri(@"\\myserver\folder1\Customer Data\sample.png");
5
Wonko the Sane

Aucune des méthodes n'a fonctionné pour moi car j'avais besoin de retirer l'image d'un dossier au lieu de l'ajouter à l'application. Le code ci-dessous a fonctionné:

 TestImage.Source = GetImage("/Content/Images/test.png")

private static BitmapImage GetImage(string imageUri)
        {
            var bitmapImage = new BitmapImage();
            bitmapImage.BeginInit();
            bitmapImage.UriSource = new Uri("pack://siteoforigin:,,,/" + imageUri,             UriKind.RelativeOrAbsolute);
            bitmapImage.EndInit();
            return bitmapImage;
        } 
3
Harish Mitra