2013-10-29 5 views
0

짧은 경로 이름을 사용하여 이미지를 WPF 프로젝트에로드하고 싶습니다. 세부 사항은 다음과 같습니다.Visual Studio에서 WPF 프로젝트의 이미지 파일을 참조하십시오.

Solution 'GB" (16 projects) 
    ABApp 
    Properties 
    References 
    ... ... 
    ImageApp 
    Properties 
    References 
    images 
     mona.jpg 
    App.xaml 
     App.xaml.cs 
    Window1.xaml 
     Window1.xaml.cs 

나는 ImageApp 프로젝트보고 싶을 :

나는이처럼 보이는 WPF 솔루션을 가지고있다.

App.xaml 파일은 다음과 같습니다 :

<Application x:Class="GB.App" 
     xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
     xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
     StartupUri="Window1.xaml"> 
    <Application.Resources> 
    </Application.Resources> 
</Application> 

App.xaml.cs 단순히 Application에서 파생하는 클래스 App를 정의합니다.

Window1.xaml 파일은 UI를 구성하고 Window1.xaml.cs은 다양한 이미지 항목이 표시 될 도면 영역을 만듭니다. 그 C#을 파일 내부

, 나는 이런 식으로 뭔가를 쓰는 결국, 내가 표시 할 이미지 images/mona.jpg를로드 :

 Image myImage; 

     BitmapImage myBitmapImage = new BitmapImage(); 

     myBitmapImage.BeginInit(); 
     myBitmapImage.UriSource = 
      new Uri("../../images/mona.jpg", UriKind.RelativeOrAbsolute); 
     myBitmapImage.EndInit(); 
     //set image source 
     FormatConvertedBitmap newFormatedBitmapSource = new FormatConvertedBitmap(); 

     newFormatedBitmapSource.BeginInit(); 
     newFormatedBitmapSource.Source = myBitmapImage; 
     newFormatedBitmapSource.DestinationFormat = PixelFormats.Bgra32; 
     newFormatedBitmapSource.EndInit(); 
     bmpSource = newFormatedBitmapSource; 
     myImage.Source = bmpSource; 
     BuildRenderTransform(); 

(내가 그 코드에 대한 사과 - 그것의 단순화의 일종이다 무슨 일이 정말 일어나고, 그래서 편지 완벽하지 않을 수 있습니다)

내 질문은 열린 우리당에 대해 다음과 같습니다. 내가 ImageApp/bin/Debug에서 끝나는 실행 프로그램()을 알 수 있도록 열린 우리당의 전면에 ../../를 작성해야 두 단계 위로 이동 한 다음 images 폴더로 이동해야합니다. 그냥 new Uri("images/mona.jpg", ...) 같은 것을 쓸 수있는 방법이 있습니까? 원본 디렉터리를 상대 검색의 시작 경로로 사용해야한다고 WPF에 알릴 수 있습니까?

나는 모든 열린 우리당 것은 나의은 Microsoft 도움말 기사와 여러 StackExchange 질문/읽은 답변에도 불구하고, 나에게 대부분 이해할 수있다, 고백 ..

나는 의심 (그리고 막연한 메모리)이이 뭔가를 추가하여 프로젝트의 xaml에이 작업을 수행 할 수는 있지만 그 작업을 수행 할 수없는 것 같습니다.

아이디어가 있으십니까?

+3

참조에 ImageApp이 있는지 확인하려고합니다. 이렇게하면 파일을 디스크에서로드하는 대신 어셈블리에 포함합니다. – SLaks

+0

그건 http://stackoverflow.com/questions/3442000/is-it-really-important-to-use-pack-uris-in-wpf-apps에있는 조언에 어긋나는 것 같습니다. 또한,'playIcon.Source = new BitmapImage (new Uri (@ "pack : // application : ,,,/TempApplication2; images/mona.jpp"));'와 비슷한 줄을 사용하여 그 조언을 따라했습니다. 나는 TempApplication2를 대체하기 위해 어떤 이름을 사용해야하는지 정말로 모른다. 모든 제안은 "당신이 어셈블리의 이름을 어디에 써 넣을 까"라고 말하면서, "ImageApp"입니까? 아니면 다른 이름입니까? 그리고 그것이 다른 이름이라면, 그것이 무엇인지 어떻게 알 수 있습니까? – John

+0

그 충고는 바로 내가 말하는 말입니다. 어셈블리 이름은 프로젝트 속성에서 찾을 수 있으며 일반적으로 프로젝트 이름과 같습니다. – SLaks

답변

1

나는 (지금 확인할 수 없습니다) 모르겠지만,이

new Uri("/ImageApp;component/images/mona.jpg"); 

같은 것을 지정하고 당신은 자원을 사용하고 URI를 포장한다

관련 문제