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;
<Image Source="/Icons/play_small.png" />
시작 부분에 슬래시가 있습니다. 즉, 루트 폴더를 살펴 봅니다. xaml 파일이 루트에 없으면 슬래시없이 xaml 파일과 동일한 디렉토리에서 검색을 시작하므로 필요합니다.
리소스 파일 사용의 이점 중 하나는 이름으로 리소스에 액세스하는 것이므로 리소스가 최신 상태로 유지되는 한 올바른 이미지가 표시되는 한 이미지가 변경 될 수 있으며 이미지 이름이 변경 될 수 있습니다.
다음은이를 수행하기위한보다 깔끔한 접근 방식입니다. 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}} />
여기서 '검색'은 리소스의 이름입니다.
<Image Source="MyRessourceDir\images\addButton.png"/>