wpf Графические ресурсы и редактор ресурсов Visual Studio 2010 - PullRequest
4 голосов
/ 12 июня 2010

Моя мотивация для этого вопроса на самом деле просто указать изображение, которое будет использоваться в пользовательском элементе управления через свойство зависимости для ImageSource. Я бью некоторые болевые точки, связанные с управлением, доступом и модульным тестированием для этого.

  • Является ли редактор ресурсов хорошим инструментом для поддержки изображений для приложения?
  • Как лучше всего перевести растровое изображение из редактора в ImageSource?
  • Как я могу получить ресурс Filename из редактора?

1 Ответ

10 голосов
/ 12 июня 2010

Нет, редактор ресурсов не является хорошим инструментом для этого.

В приложении WPF лучший способ - поместить все ваши изображения в каталог «Изображения» и пометить каждое из них как «Ресурс».».Затем вы можете ссылаться на них непосредственно в элементах управления изображениями и в других местах.

Вот точные шаги:

  • Обрезать и иным образом корректировать изображения с помощью любимой программы редактирования растровых изображений (Paint.NET,Photoshop и т. Д.)
  • Сохраните их как файлы .png (или .jpg или .gif, если хотите)
  • Создайте папку «Изображения» внутри решения Visual Studio (или несколько папок, однако).Вы хотите организовать это)
  • Перетащите изображения с жесткого диска в папку «Изображения» (или щелкните правой кнопкой мыши проект, выберите «Создать» -> «Существующий элемент» и выберите изображения)

Теперь вы можете легко ссылаться на свои изображения в XAML:

<Image Source="Images/MyImage.png" />

Или в коде:

var source = (BitmapSource)Application.LoadComponent(
               new Uri("Images/MyImage.png", UriKind.Relative));

Вы также можете ссылаться на изображения во внешних сборках:

<Image Source="ReferencedAssembly;v1.0.0.1;component/Images/MyImage.png" />

Что в коде будет:

var source = (BitmapSource)Application.LoadComponent(
               new Uri("ReferencedAssembly;v1.0.0.1;component/Images/MyImage.png",
                 UriKind.Relative));
...