Загрузите изображение во время выполнения в WPF и C#
В этом примере показано, как загрузить изображение во время выполнения в программе WPF. Как это часто бывает с WPF, это легко, когда вы знаете, что делать. Он выясняет, что делать сложно.
Короче говоря, вам нужно установить свойство Source элемента управления Image для изображения. К сожалению, вы не можете использовать растровое изображение в WPF, поэтому вам нужно использовать BitmapImage. A BitmapImage немного похож на Bitmap, за исключением менее полезного для рисования.
Чтобы создать BitmapImage, вы передаете его конструктору местоположение файла, который вы хотите загрузить, вроде того, как вы создаете Bitmap. Конечно, это WPF, поэтому вы не можете просто передать конструктору фактическое местоположение файла. Вместо этого вам нужно передать его Uri. A Uri представляет собой унифицированный идентификатор ресурса, объект, который может представлять расположение файлов, а также местоположения в Интернете. Таким образом, вы можете загрузить BitmapImage из файла в Интернете, локальной сети или где-то еще.
(В этом и заключается причина, по которой WPF заставляет вас идти на эти длины, поэтому вы можете загрузить изображение из Интернета. Одно из предположений WPF состоит в том, что вы создаете сетевое приложение. , но делает создание настольных приложений намного сложнее. Однако это полезно. Попробуйте установить свойство Source элемента управления Image на http://www.csharphelper.com/ banner.png во время выполнения и посмотреть, что произойдет.)
Итак, это шаги для загрузки изображения. Вам все равно нужно найти изображение. Вы можете просто подключить его к программе, но этот пример позволяет пользователю выбрать файл изображения для загрузки. Для этого используется класс Microsoft.Win32.OpenFileDialog. Он довольно похож на класс OpenFileDialog, используемый настольными приложениями, за исключением того, что он возвращает true или false, чтобы указать, выбрал ли пользователь файл.
Теперь, когда вы знаете шаги, вот код, который программа использует для загрузки изображения во время выполнения.
using Microsoft.Win32; ... private void btnBrowse_Click(object sender, RoutedEventArgs e) { OpenFileDialog ofdPicture = new OpenFileDialog(); ofdPicture.Filter = "Image files|*.bmp;*.jpg;*.gif;*.png;*.tif|All files|*.*"; ofdPicture.FilterIndex = 1; if (ofdPicture.ShowDialog() == true) imgPicture.Source = new BitmapImage(new Uri(ofdPicture.FileName)); }
Код создает OpenFileDialog, устанавливает его свойства Фильтр и FilterIndex и отображает его. Если пользователь выбирает файл, программа создает Uri для представления местоположения файла, использует его в конструкторе BitmapImage и устанавливает Image свойство управления Source, равное результату BitmapImage.