programing

이미지가 Visual Studio 디자이너에 표시되지만 런타임에는 표시되지 않음

topblog 2023. 5. 18. 20:40
반응형

이미지가 Visual Studio 디자이너에 표시되지만 런타임에는 표시되지 않음

저는 현재 VS studio 2010 .NET 4.0에서 일하고 있습니다.제 시나리오는 다음과 같습니다.

현재 "Icons"라는 하위 폴더를 포함하는 "Images"라는 클래스 라이브러리 프로젝트가 있습니다.모든 아이콘은 현재 이 프로젝트에 있으며, 오리진 사이트를 통해 여러 프로젝트에서 액세스할 수 있습니다.디자이너에 있는 동안에는 모든 것이 정상적으로 표시되지만 실행 시간 동안에는 이미지가 표시되지 않습니다.

다음은 내 폴더 구조입니다.

  • 루트 폴더
    • 이미지들
      • 아이콘
    • 프로젝트 1
    • 프로젝트 2
    • 프로젝트 3

모든 프로젝트는 Images 클래스 lib.proj를 참조하고 있으며, "Images" 프로젝트 내의 "icons" 하위 폴더 내의 모든 아이콘은 "Build Action = Resource"로 설정되어 있습니다.

xaml은 다음과 같이 나타납니다(설계 시간 동안 완벽하게 볼 수 있음).

     <Button Name="Button1" Click="Button1_Click">
        <Button.Content>
            <Image Source="pack://siteoforigin:,,,/Data.Images;component/Icons/Button1.png" />
        </Button.Content>
    </Button>

이건 날 미치게 했어요.저는 다양한 기사를 바탕으로 다양한 시도를 해보았지만 아무 것도 되지 않았습니다.내 xaml 창과 이미지는 실행 어셈블리와 별도의 DLL에 있습니다.그것이 제 문제의 일부였는지 확실하지 않습니다.

결국 저는 다음과 같은 성공을 거두었습니다.

  1. 프로젝트의 이미지 속성에 "포함된 리소스"가 아닌 "빌드 작업" = "리소스"가 있는지 확인합니다.
  2. xaml에서 이미지 태그를 선택한 상태에서 속성 창을 사용하여 이제 이미지가 드롭다운 목록에 표시되므로 Source 드롭다운을 선택합니다!이것은 비주얼 스튜디오가 저를 위해 문자열을 포맷할 수 있게 해주었습니다.

내 이미지를 위해 포맷된 문자열 비주얼 스튜디오는 다음과 같습니다.

<Image Source="/Paperless.Common;component/Resources/Checkbook.png" />

여기서 "종이 없는."Common"은 제 어셈블리 이름이고 "Checkbook.png"은 "Resources" 폴더에 상주하는 제 이미지입니다.


완전성을 위해 위의 URI는 리소스 파일 팩 URI이며, 여기서 URI 접두사 부분은 XAML 파서에 의해 자동으로 추가됩니다.

뒤에 있는 에는 URI가 .pack://application:XAML 파일에서도 합니다.

Source="pack://application:,,,/Paperless.Common;component/Resources/Checkbook.png"

이미지에 빌드 작업이 리소스로 설정되어 있지 않을 수 있습니다.Embedded Resource를 포함한 다른 리소스의 경우 런타임에 제대로 표시되지 않습니다.

siteoforigin디렉터리에 사해야하리용는에디또리는렉하디다복파에사니일입된리터렉위터실행대해소를 .application내가 아는 한.

원산지:

경로: 실행 파일 어셈블리가 시작된 위치를 기준으로 하는 경로를 포함한 오리진 사이트 파일의 이름입니다.

글쎄요, 저는 이 문제에 대해 3시간 이상을 기다렸습니다.당신의 답변은 제가 그 문제를 부분적으로 해결하는 데 도움이 되었고 그것이 제가 이 유용한 토론에 추가하도록 촉구했습니다.

다음과 같이 문제를 해결했습니다.

  1. 솔루션 탐색기 리소스에서 모든 이미지를 선택합니다.
  2. 마우스 오른쪽 단추를 클릭하고 속성으로 이동합니다.
  3. "리소스"에 대한 작업 빌드

그 후 이미지를 여러 번 사용하거나 동일한 이미지 컨트롤에서 다른 이미지로 변경하여 XAML 또는 이미지 컨트롤 속성에서 이미지의 경로를 변경하려고 할 때 다음과 같이 됩니다.

Source="pack:://application:,,,/Resources/image.png"

디자인 타임 이미지 데이터를 보여주기 위해 왔습니다(역문제).

ImagePath="pack://application:,,,/MyApplicationName;component/Images/Icons/Button1.png"무엇이 속임수를 썼는가, 게다가.Build Action로 설정한.Resource그리고.Copy to Output Directory로 설정한.Copy if newer.

다음은 저에게 효과가 있었습니다.

빌드 작업 = 리소스

출력 디렉터리에 복사 = 복사 안 함

xaml:

<Image Source=“Rsources/myPic.png”/>

여기서 "myPic.png"은 "Resources" 폴더 내부의 이미지입니다.

이 문제를 먼저 해결하지 않으려는 사용자는 여기에 언급된 수정 사항 중 일부를 시도했지만 아무 것도 작동하지 않는 경우에는 솔루션을 정리하고 재구축해 보십시오.프로젝트에 이미지를 추가하는 것을 깜빡했습니다(이미지 폴더 만들기, 폴더 오른쪽 클릭 -> 기존 추가 -> 이미지 클릭).

그것은 제가 청소하고 재건하기 전까지는 고쳐지지 않았습니다.

이미지가 창과 같은 프로젝트에 있지 않습니다.

Solution Explorer > "Project name" > Resources로 이동하여 문제를 해결한 후 이미지를 선택하고 Build Action을 Resource변경합니다.

저는 비슷한 문제를 발견했습니다.저는 처음에 (교실 도서관 프로젝트 하에서) 다음 형식을 사용하고 있었습니다.

<Image Source="pack://siteoforigin:,,,/Images/Toolbars/Legend.png"/>

그러나 솔루션을 클리닝/빌드 또는 리빌드하거나 Visual Studio를 다시 시작할 때 버튼 이미지는 XAML 디자이너에 표시되지만 사라집니다.

저는 이상한 해결책을 생각해 냈지만 그것은 저에게 효과가 있었습니다.이 솔루션을 사용하면 Visual Studio가 닫히고 다시 시작된 후에 -솔루션이 재구성된 후 -솔루션이 정리되고 빌드된 후 -설계 시간에 XAML에 이미지가 항상 그대로 유지됩니다.

이 솔루션을 사용하려면 기본 응용 프로그램 및 클래스 라이브러리 프로젝트 모두에서 동일한 이미지 이름을 가진 두 개의 폴더(리소스라고 함)가 필요합니다.프로젝트 아래

<Image Source="pack://application:,,,/Resources/Legend.png"/> 

이미지의 경우 BuildAction = Resource & Copy to OutputDirectory = 두 곳 모두에서 복사하지 마십시오.

메인 응용 프로그램에서 Resource Folder만 사용하면 계속 작동하지만 이번에는 XAML design time parser가 이미지를 볼 수 없습니다.그래서 클래스 라이브러리(XAML UserControl이 있는 곳)에서 동일한 폴더를 복제했습니다.

이 합병증의 원인은 XAML 파서 내부 작업일 수 있습니다.설계 시간 부분은 항상 사용자 컨트롤이 있는 프로젝트 아래의 폴더 위치를 확인하는 반면, 런타임 부분은 이미지가 기본 응용 프로그램에 있어야 제대로 실행됩니다.

저는 이것이 적절한 해결책이나 합리적인 해결책이라고 전혀 주장하지 않지만, 제 경우에는 효과가 있었습니다.개선되거나 더 나은 솔루션에 대한 의견은 환영합니다.

업데이트: 시행착오 끝에 + 몇 가지 다른 단서들 (https://learn.microsoft.com/en-us/previous-versions/dotnet/netframework-4.0/aa970069(v=vs.100)), 저는 더 간단한 해결책을 생각해냈고 그것은 (저에게) 효과가 있습니다.

리소스에서 선언:

<BitmapImage x:Key="mLegend" UriSource="pack://siteoforigin:,,,/Images/Toolbars/Legend/Legend.png"/>

Button에서 선언:

<Image Source="{StaticResource mLegend}"/>

BuildAction = Content & Copy to OutputDirectory = Copy(새로 작성된 경우 복사)를 설정합니다.

마지막 단계로 세척 및 구축 솔루션을 선택합니다.

가장 쉬운 방법은 이미지를 프로젝트에 추가하는 것입니다.솔루션 탐색기 -> 추가 -> 폴더(리소스 이름 지정) -> 새로 생성된 리소스 폴더를 마우스 오른쪽 버튼으로 클릭하여 프로젝트에 리소스 폴더를 추가합니다. -> 기존 항목 추가 -> 이미지 찾기(모든 파일 선택)

선택한 xaml 양식에 이미지 항목을 추가합니다.속성 -> 공통 -> 소스에서 이미지를 드롭다운하고 선택할 수 있습니다.

드롭다운에서 선택

상대 경로도 간단하게 사용할 수 있습니다.

<Button Name="Button1" Click="Button1_Click">
    <Button.Content>
        <Image Source="Icons/Button1.png" />
    </Button.Content>
</Button>

저도 같은 문제가 있었어요.
이제 효과가...
사용해 보십시오.

<Button x:Name="b2" HorizontalAlignment="Left" VerticalAlignment="Top"
    Width="26" Height="29"> 
    <Button.Background> 
        <ImageBrush ImageSource=" a.png"/> 
    </Button.Background>
</Button>

아마도 이것은 Visual Studio 2019의 누군가에게 도움이 될 것입니다.단순한 /을 놓쳤습니다.

단계: 프로젝트 오른쪽 버튼 클릭 -- 추가 > 기존 항목 -- 추가할 사진 선택 -- visual Studio에서 사진 클릭 -- 속성으로 이동 -- 빌드 작업을 > 리소스로 변경합니다.

아니요, 우리는 Xaml로 가서 당신의 자원을 추가합니다.

<UserControl.Resources> <Image x:Key="ButtonImage" Source="/image.jpg"/> </UserControl.Resources>

이미지 이름 앞의 /는 필수입니다./가 없으면 xaml에서 작동하는 것으로 표시되지만 일단 프로그램을 시작하면 표시되지 않습니다.

<Button Content="{StaticResource ButtonImage}"></Button>

당신이 이것을 읽는다면 그것이 해결되기를 바랍니다.

오늘 제가 방금 한 것처럼 간단할 수도 있습니다.저는 솔루션에서 파일을 참조하지 않고 폴더에 파일을 배치했습니다.그것은 디자인하는 동안 잘 나타났어요.

DLL의 이미지를 사용하는 경우 dll 프로젝트의 프로젝트 속성에 기본 리소스 파일이 설정되어 있는지 확인합니다.액세스 수식자를 공용으로 변경합니다.또한 이미지 빌드 작업을 "리소스"로 설정합니다.

이 경우 두 단계(속성 창)만 수행하면 되었습니다.
작업 파일을 ""로 변경; "리소스"로 합니다.
Source(소스) 필드에서 원하는 이미지를 선택합니다.

솔루션에 이미지가 포함되어 있는지 확인 부탁드립니다.이미지가 포함되지 않은 경우 솔루션에서 모든 파일 표시를 클릭한 다음 이미지를 마우스 오른쪽 단추로 클릭하고 프로젝트에 포함 옵션을 선택합니다.그런 다음 상대 경로에서도 작동합니다.

예:

Source="/Images/Logo/close.png" "

1 - 파일 이미지 속성을 리소스로 변경한 후 이미지 파일을 오른쪽 클릭합니다. -> 속성 -> 빌드 액션을 리소스로 전환합니다.

2- 이미지를 표시하려면 이 태그를 사용합니다.

 <Image Source="pack://application:,,,/[Put here the  name of the referenced assembly];component/[File path]"/>

<Image Source="pack://application:,,,/My;component/Resources/switch-off.png"/>

XAML 영상 코드를 클릭하여 영상을 선택한 다음 common/source 아래 드롭다운에서 Properties 창에서 영상을 찾아 선택합니다.

저도 같은 문제가 있었습니다.이 이미지는 앱이 실행될 때가 아니라 디자이너에 표시됩니다.이 문제는 속성 창을 사용하여 이미지를 추가했을 때 해결되었습니다.

문제를 해결했습니다.그것은 <이미지>가 있는 몇 가지 사용자 컨트롤을 가지고 있었습니다.다른 프로젝트에 속한 <윈도>에서 사용하는 것이 제 목표였습니다.문제: 디자인 모드에서는 이미지 내용이 표시되지만 런타임에 사라집니다.솔루션:

  1. Visual Studio에서 솔루션 탐색기 프레임(Ctrl+W,S)으로 이동하려면 이미지로 사용할 파일을 선택합니다.
  2. 속성(Ctrl+W,P) 프레임에서 다음을 선택합니다.
  • 컴파일러 작업: "리소스"
  • 출력 디렉토리에 복사: "항상 복사"
  1. Xaml에서 파일을 끕니다.다음과 같이 나타납니다. <Image Source="/projectspace name; component/Folder/filename.png" />

그건 효과가 있다.

  1. 폴더 "아이콘"을 프로젝트 "이미지"로 드래그 앤 드롭하기만 하면 됩니다.
  2. 상대 경로 사용: 이미지 소스="아이콘/버튼1.png".

모두 아주 좋은 대답들입니다.위에 있는 것은 보지 못했고 단순하고 명백하지만, 확실히 원래 게시물의 증상을 일으킬 것입니다.우리가 급할 때 잊기 쉽습니다.

파일이 "프로젝트에 포함"되었는지 프로젝트로 이미지를 끌어다 놓았는지 확인합니다.상황에 맞는 메뉴에서 바로 사용할 수 있습니다.

UWP에서 빌드 액션에 대한 "리소스" 선택은 없지만 "내용"을 선택하면 작동하며 다른 *.png 파일이 들어온 것과 같습니다.제게 도움이 되지 않았던 것은 어떤 이유에서인지 "임베디드 리소스"로 들어왔습니다.제안해 주셔서 감사합니다.

어셈블리 이름 작업 포함 Build action=> 리소스를 출력 디렉터리에 복사 => 최신인 경우 복사

   System.Windows.Controls.Image mini = new System.Windows.Controls.Image();
                            mini.Source = new BitmapImage(new Uri(@"pack://application:,,,/Cloudnynpos;component/Imageresources/tbl2.png"));
                            btnnew.Content = mini;

Solution Explorer(솔루션 탐색기)로 이동-->Find Your Images Folder(이미지 폴더 찾기)-->오른쪽에서 이미지를 클릭하고 Properties(속성)로 이동합니다.빌드 작업 없음을 리소스로 변경...이미지 속성 변경

이것은 저에게 효과가 있었지만 3단계를 "내장 리소스"에서 "리소스"로 변경했을 때만 가능했습니다.저는 여전히 그의 게시물 아래에 댓글을 남길 충분한 명성이 없기 때문에 @Mohamed Hussein 답변을 복사하여 여기에 붙여넣었습니다.>>>

글쎄요, 저는 이 문제에 대해 3시간 이상을 기다렸습니다.당신의 답변은 제가 그 문제를 부분적으로 해결하는 데 도움이 되었고 그것이 제가 이 유용한 토론에 추가하도록 촉구했습니다.

다음과 같이 문제를 해결했습니다.

1 - 솔루션 탐색기 리소스에 있는 모든 이미지를 선택합니다.

2- 마우스 오른쪽 단추를 클릭하고 속성으로 이동합니다.

3 - "내장된 리소스"에 대한 빌드 작업 >> "리소스"로 변경

4 - 출력에 "항상 복사"로 복사

5 - 솔루션을 저장 및 구축합니다.

6 - 이미지를 추가하고 주의하거나 ZIN덱스 값을 확인합니다.

그 후 이미지를 여러 번 사용하거나 동일한 이미지 컨트롤에서 다른 이미지로 변경하여 XAML 또는 이미지 컨트롤 속성에서 이미지의 경로를 변경하려고 할 때 다음과 같이 됩니다.

source="pack://site of origin:..//Resources/image.png"

이미지 속성으로 이동한 다음 빌드 작업을 "내용"으로 설정하고 출력 디렉터리에 복사를 "항상 복사"로 설정한 후에만 작동했습니다.

언급URL : https://stackoverflow.com/questions/8483002/image-shows-up-in-visual-studio-designer-but-not-during-run-time

반응형