Язык программирования C#9 и платформа .NET5 - Троелсен Эндрю

На заметку! Для свойства Copy Output Directory можно было бы также выбрать вариант Copy if Newer (Копировать, если новее), что позволит сократить время копирования при построении крупных проектов с большим объемом содержимого. В рассматриваемом примере варианта Copy always вполне достаточно.
После компиляции проекта появится возможность щелкнуть на кнопке Show all Files (Показать все файлы) в окне Solution Explorer и просмотреть скопированную папку
ImagesbinDebugПрограммная загрузка изображения
Инфраструктура WPF предоставляет класс по имени
BitmapImageSystem.Windows.Media.ImagingSystem.UriList<BitmapImage>int<b>// Список файлов BitmapImage.</b>List<BitmapImage> _images=new List<BitmapImage>();<b>// Текущая позиция в списке.</b>private int _currImage=0;Внутри обработчика события
LoadedSourceImageprivate void MainWindow_OnLoaded( object sender, RoutedEventArgs e){ try { string path=Environment.CurrentDirectory; // Загрузить эти изображения из диска при загрузке окна. _images.Add(new BitmapImage(new Uri($@"{path}ImagesDeer.jpg"))); _images.Add(new BitmapImage(new Uri($@"{path}ImagesDogs.jpg"))); _images.Add(new BitmapImage(new Uri($@"{path}ImagesWelcome.jpg"))); // Показать первое изображение в списке. imageHolder.Source=_images[_currImage]; } catch (Exception ex) { MessageBox.Show(ex.Message); }}Реализуйте обработчики для кнопок Previous и Next, чтобы обеспечить проход по изображениям. Когда пользователь добирается до конца списка, происходит переход в начало и наоборот.
private void btnPreviousImage_Click( object sender, RoutedEventArgs e){ if (--_currImage < 0) { _currImage=_images.Count - 1; } imageHolder.Source=_images[_currImage];}private void btnNextImage_Click( object sender, RoutedEventArgs e){ if (++_currImage >=_images.Count) { _currImage=0; } imageHolder.Source=_images[_currImage];}Теперь можете запустить программу и переключаться между всеми изображениями.
Встраивание ресурсов приложения
Если файлы изображений необходимо встроить прямо в сборку .NET Core как двоичные ресурсы, тогда выберите файлы изображений в окне Solution Explorer (из папки
ImagesbinDebugImages
В меню Build (Сборка) среды Visual Studio выберите пункт Clean Solution (Очистить решение), чтобы очистить текущее содержимое папки
binDebugImagesbinDebugImagesВам нужно модифицировать код для загрузки изображений в список, извлекая их из скомпилированной сборки:
// Извлечь из сборки и затем загрузить изображения._images.Add(new BitmapImage(new Uri(@"/Images/Deer.jpg", UriKind.Relative)));_images.Add(new BitmapImage(new Uri(@"/Images/Dogs.jpg", UriKind.Relative)));_images.Add(new BitmapImage(new Uri(@"/Images/Welcome.jpg", UriKind.Relative)));В таком случае больше не придется определять путь установки и можно просто задавать ресурсы по именам, которые учитывают название исходного подкаталога. Также обратите внимание, что при создании объектов
UriRelativeUriKind