반응형
system.windows.controls.image 에서 이미지가 표시되지 않는다.
개발중인 프로그램에서 이미지가 표시되지 않는 문제가 발생했다.
왜 이미지가 표시가 안될까.
재미있는 건 메모리 상에는 존재하는데, 눈에 보이지 않는다는 점이다.
Visible이 자동으로 inVisible로 변하기라도 하나?
단순히 Memstream으로 불러왔을 때는 메모리 문제가 발생해서
오류가 발생했다. 이를 회피하는 방법이 필요했는데,
이미지를 다른 객체로 복사하는 방법이었다.
다음과 같은 방식으로 이미지를 복사해와서 불러왔다.
//이미지 복사 방식 // using : 리소스를 자동으로 해제해준다. //https://stackoverflow.com/questions/13625637/c-sharp-image-from-file-close-connection System.Drawing.Image copyPhoto; using (var bmpTemp = new Bitmap(@imageLocalPath)) { copyPhoto = new Bitmap(bmpTemp); }
이미지를 불러올 때, @라는 와일드카드를 사용한다. php에서 @는 경고를 따로 표시 하지 않고 생략함을 의미한다. 같은 의미로 볼 수 있을까?
문제는 이렇게 복사한 이미지가 올바르게 표시되지 않는다는 점이었다.
이미지가 비어있는 건지 다음과 같이 픽셀을 검사해보기 했지만 빈 것은 아니었다.
//이미지 복사 방식 // using : 리소스를 자동으로 해제해준다. //https://stackoverflow.com/questions/13625637/c-sharp-image-from-file-close-connection System.Drawing.Image copyPhoto; using (var bmpTemp = new Bitmap(@imageLocalPath)) { copyPhoto = new Bitmap(bmpTemp); }
결론적으로 다음과 같은 코드가 도움이 되었다.
역시 믿고 보는 스텍오버플로우다~!
BitmapImage _image = new BitmapImage(); _image.BeginInit(); _image.CacheOption = BitmapCacheOption.None; _image.UriCachePolicy = new RequestCachePolicy(RequestCacheLevel.BypassCache); _image.CacheOption = BitmapCacheOption.OnLoad; _image.CreateOptions = BitmapCreateOptions.IgnoreImageCache; _image.UriSource = new Uri(@"Y:/screenshots/naratco08-0-0-screenshot.png", UriKind.RelativeOrAbsolute); _image.EndInit(); ScreenAtco01Image.Source = _image;
출처
https://stackoverflow.com/questions/1491383/reloading-an-image-in-wpf/1491655#1491655
반응형
'호구지책 > C/C++/C#' 카테고리의 다른 글
[C#] postgreSQL Notification 사용하기 (0) | 2017.06.06 |
---|---|
[C#/WPF] Meterial Design Themes (0) | 2017.06.06 |
[C#/WPF] 빌드 작업(Build Action)에 대해서 (0) | 2017.06.03 |
[C#] 공부를 위한 추천도서 (0) | 2017.05.28 |
[C#] 프로그램 실행 아이콘 변경하기 (0) | 2017.05.08 |
[C#] 바코드 라이브러리 (0) | 2017.04.20 |
[MFC] CSstring 형변환 함수 (0) | 2017.02.16 |
[MFC] 클래스 호출하기 (0) | 2017.02.16 |
댓글