[wpf] XAML에서 이미지 리소스를 참조하는 방법은 무엇입니까?

Image컨트롤을 창에 놓고 “Resources.resx”라는 프로젝트 리소스 파일에 저장된 이미지를 표시하고 싶습니다. 리소스 파일의 이미지 이름은 ‘검색’입니다.

누군가 내가 이것을 어떻게 할 수 있는지 보여줄 수 있습니까?



답변

이미지가 리소스 폴더에 있고 빌드 작업이 리소스로 설정된 경우. 다음과 같이 XAML에서 이미지를 참조 할 수 있습니다.

"pack://application:,,,/Resources/Search.png"

Resources 폴더 아래에 폴더 구조가 없으며 응용 프로그램이라고 가정합니다. 예를 들어 다음을 사용합니다.

ImageSource="pack://application:,,,/Resources/RibbonImages/CloseButton.png"

Resources 폴더 아래에 RibbonImages라는 폴더가있을 때.


답변

프로젝트의 아이콘 폴더에 이미지가 있고 빌드 작업이 “리소스”인 경우 다음과 같이 참조 할 수 있습니다.

<Image Source="/Icons/play_small.png" />

이것이 가장 간단한 방법입니다. 이것이 리소스 관점에서 순전히 수행 할 수있는 유일한 방법이며 프로젝트 파일은 없습니다.

var resourceManager = new ResourceManager(typeof (Resources));
var bitmap = resourceManager.GetObject("Search") as System.Drawing.Bitmap;

var memoryStream = new MemoryStream();
bitmap.Save(memoryStream, System.Drawing.Imaging.ImageFormat.Bmp);
memoryStream.Position = 0;

var bitmapImage = new BitmapImage();
bitmapImage.BeginInit();
bitmapImage.StreamSource = memoryStream;
bitmapImage.EndInit();

this.image1.Source = bitmapImage;


답변

리소스 파일 사용의 이점 중 하나는 이름으로 리소스에 액세스하는 것이므로 리소스가 최신 상태로 유지되는 한 올바른 이미지가 표시되는 한 이미지가 변경 될 수 있으며 이미지 이름이 변경 될 수 있습니다.

다음은이를 수행하기위한보다 깔끔한 접근 방식입니다. Resources.resx가 ‘UI.Images’네임 스페이스에 있다고 가정하고 다음과 같이 xaml에 네임 스페이스 참조를 추가합니다.

xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:UI="clr-namespace:UI.Images"

다음과 같이 이미지 소스를 설정하십시오.

<Image Source={Binding {x:Static UI:Resources.Search}} /> 여기서 ‘검색’은 리소스의 이름입니다.


답변

  1. 프로젝트에 폴더를 추가하고 “기존 항목”을 통해 여기에 이미지를 추가합니다.
  2. 다음과 유사한 XAML : <Image Source="MyRessourceDir\images\addButton.png"/>
  3. F6 (빌드)


답변