문제

내 어셈블리에는 chublication == resource가있는 이미지가 포함되어 있습니다. 이 임베디드 리소스에서 비트 모임을 얻고 싶습니다.

파일에서 BitMapImage를 다음과 같이로드 할 수 있습니다.

var bitmap = new BitmapImage(new Uri(path));

그러나 임베디드 리소스 이미지를 참조 할 URI를 만드는 방법은 무엇입니까?

내가 시도하고 만들 때URI를 포장하십시오' (예를 들어 pack://application:,,,/MyImage.png 또는 pack://application:,,,/MyAssembly;component/MyImage.png), 예외가 발생합니다.

System.uriformatexception "유효하지 않은 URI : 콜론 ( ':')이 있기 때문에 항구가 예상되었지만 항구는 구문 분석 할 수 없었습니다."

나는 이것의 uriformatexception에 대한 수정을 찾았다 블로그 게시물

그러나 그 수정 사항이 적용되면 여전히 팩 URI에서 비트 맵을로드하려는 예외를 얻습니다.

사용할 때 pack://application:,,,/Image.png 형식, 나는 nullReferenceException을 얻고 사용할 때 pack://application:,,,/AssemblyName;component/Image.png 형식, "URI 접두사가 인식되지 않는다"는 정보를 얻지 못했습니다.


요약내 문제는 WPF 제어/창 등이 인스턴스화되기 전에 프로세스에서 '팩 URI'를 사용하려고했기 때문에 '팩'URI 체계가 아직 등록되지 않았다는 것입니다 (다른 WPF 필수 '물건'도 아닙니다. 팩 구성표 자체를 수동으로 등록한다고해서 문제가 해결되지 않기 때문에 설정하십시오). 해결책은 WPF USERCONTROL을 인스턴스화하여 Pack URI를 사용하기 위해 기다리는 것이 었습니다.

도움이 되었습니까?

해결책

이 MSDN 페이지 WPF의 리소스 URI에 대해 알고 싶은 모든 정보 (종종 Pack URI)가 있습니다. 당신은 사용하고 싶을 것입니다 상대적 우리 더 자주 아마도보십시오 표 4, 이것은 특히 사용되어야합니다.

Resource (Pack) Uris에 대한 브리 퍼링 개요를 원한다면 참조하십시오. 이 블로그 게시물. 구문은 실제로 비교적 간단하다는 것을 보여줍니다.

pack://application:,,,/ResourceFile.xaml

pack://application:,,,/ReferencedAssembly;component/ResourceFile.xaml

그러나 운동해야 할 몇 가지 단점이 있습니다 (내 경험에 따라) URI가 올바른 자원을 찾으려면 약간의 실험이 필요합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top