2012-10-18 10 views
8

Mam kilka obrazów dodanych do mojego rozwiązania, a teraz znajduje się pod folderem images \ flowers \ rose.png wewnątrz eksploratora rozwiązań. Chcę sposobu, aby dynamicznie załadować ten obraz do mojej kontroli obrazu.Dynamiczne dodawanie i ładowanie obrazu z zasobów w języku C#

Moje obecne podejście polega na tworzeniu typu "treść" i wykorzystaniu właściwości "kopiuj zawsze". Następnie podałem względną ścieżkę do obrazu, jak poniżej.

Image2.Source = new BitmapImage(new Uri("/images/flowers/Customswipe_b.png", UriKind.Relative)); 

Czy istnieje sposób, aby go załadować z zasobu bez kopiowania go do systemu docelowego.

Odpowiedz

1

użyć tego:

Image2.Source = new Bitmap(
     System.Reflection.Assembly.GetEntryAssembly(). 
     GetManifestResourceStream("MyProject.Resources.myimage.png")); 

Albo

Image2.Source = new Bitmap(WindowsFormsApplication1.Properties.Resources.myimage); 

Polecam drugi.

14

Poniższe działa dobrze dla mnie:

image.Source = new BitmapImage(new Uri("pack://application:,,,/YourAssemblyName;component/Resources/someimage.png", UriKind.Absolute)); 

Ponadto należy zmienić Build Action swojego wizerunku z None do Resource.

0

Sposób, w jaki dodajesz obraz, a następnie zmieniasz jego "Czynność budowania" na "Zasoby" również wykona zadanie, Ale tak, jak prosiłeś o dodanie i załadowanie z Zasobów, byłoby to inne podejście do osiągnięcia tego samego zadania. Chciałbym podać ci link do przeczytania niektórych artykułów msdn.

Adding and Editing Resources (Visual C#)

0

miałem pewne problemy, aby znaleźć dokładnie składni URI, więc patrz poniżej więcej szczegółów:

Jeśli obraz (myImage.png) znajduje się w podkatalogu „obrazów” (z korzenia katalog), dokładna składnia jest następująca:

image.Source = new BitmapImage(new Uri(@"pack://application:,,,/images/myImage.png", UriKind.Absolute)); 

Jeśli obraz jest w podfolderze images/icon/ (z katalogu), składnia jest:

image.Source = new BitmapImage(new Uri(@"pack://application:,,,/images/icon/myImage.png", UriKind.Absolute)); 
  • Uwaga: część "pack://application:,,, nie zmienia się.
  • Koniecznie ustaw „Buduj działania” na „zasoby”

Aby uzyskać więcej informacji: see here.