2011-10-07 3 views
1

내가 리소스 폴더 (예를 들어, 자원/비트 맵)의 하위 폴더에 몇 가지 비트 맵을 가지고 있고 한 번에 비트 맵 []에로드하려면, 그C#을 사용하여 리소스 폴더의 여러 파일에 대해 일괄 가져 오기를 수행하는 방법은 무엇입니까?

BitmapSource[] bitmaps= 
    TheMethodIWantToImplement(
    new Uri("pack://application:,,,/MyAssembly;component/Resources/Bitmap", 
    UriKind.Absolute)); 

이다 그러나 나는 것을 발견 Directory.GetFiles는 Uri 인수를 허용하지 않습니다. 그래서 내가 무엇을해야하니? 고맙습니다.

+1

아마도이 질문에 대한 답변으로 도움을 얻을 수 있습니다. http://stackoverflow.com/questions/2517407/enumerating-net-assembly-resources-at-runtime – Teudimundo

답변

0

고맙습니다. @ 테디 문도. 다음과 같이 그 링크의 조각을 수정 :

var asm = Assembly.GetEntryAssembly(); 
string resName = asm.GetName().Name + ".g.resources"; 
using (var stream = asm.GetManifestResourceStream(resName)) 
using (var reader = new System.Resources.ResourceReader(stream)) 
{ 
    var paths = from entry in reader.Cast<DictionaryEntry>() 
       where ((string)entry.Key).Contains("sub-folder-name") 
       select entry.Key; 
    if (paths.Any()) 
    { 
     foreach (string path in paths) 
     { 
      Uri uri = new Uri(String.Format(
         "pack://application:,,,/{0};component{1}", asm.GetName(), path) 
         , UriKind.Absolute); 
      //use the uri for the rest 
     } 
    } 
} 

을하지만 난 여전히 UnmanagedMemoryStream의 인스턴스를 직접 (위의 LINQ 표현에 select entry.Value를 통해 검색 할 수 있습니다) 리소스 스트림을 사용하고 싶습니다. 내 개체를 구성하려면 MemoryStream이 필요하지만 변환을위한 우아한 방법을 찾지 못했습니다.

관련 문제