2012-07-20 4 views
0

저는 메트로 어플리케이션에서 일하고 있습니다.메트로 (UWP)에서 BitmapImage의 폭과 높이를 얻는 방법은 무엇입니까?

그리고 생성자부터 나는 Uri 설정 BitmapImage을 사용하고 있습니다,하지만 난 PixelWidthPixelHeight 반환 0 (나는 또한 Uri가 올바른지 확인 한) 모든 시간 깨달았다.

저에게 그 속성을 돌려주는 또 다른 클래스를 찾을 수 없습니다. 바이트 배열 등을 통해 데이터를 가져 오는 방법이 있다면 생각하고있었습니다. 어떻게 생각해?

+0

로컬 파일 시스템/리소스에서로드한다고 가정하면 비트 맵이로드되는 다음 주 스레드 루프가 대기 할 때까지 기다려보십시오. 네트워크/인터넷 소스의 경우에는 조금 더 기다려야 할 수 있습니다 다운로드합니다. –

답변

1

CacheOption 속성을 확인하고 BitmapCacheOption.None으로 설정하십시오. WriteableBitmap으로 변환 해 볼 수도 있습니다. 내가 말한 것이 사실이 아니라면, 미안하다, 나는 시험 할 수 없기 때문에. Xaml (wpf 만 해당) xD

+0

CacheOption을 BitmapCacheOption.None으로 설정했는데 작동하지 않았습니다. –

+0

이미지를 소스로 전달하기 전에 BitmapCache를 변경해야합니다. 그럼 WriteableBitmap을 캐스팅 해보십시오 .... –

0

BitmapImage0PixelWidth이고 이미지는로드되지 않은 경우 PixelHeight입니다. 이미지는 실제로 사용될 때만로드됩니다 (예 : Image.Source에 할당되고 표시됨). 그건 문제가되는거야. BitmapCacheOption.None을 사용하면 WP7에서만 작동합니다.

오른쪽 솔루션은 BitmapDecoder을 사용하는 것입니다 : this solution on MSDN forums

var stream = await storageFile.OpenReadAsync(); 
var decoder = await BitmapDecoder.CreateAsync(stream); 
var size = new BitmapSize { Width = decoder.PixelWidth, Height = decoder.PixelHeight }; 

발견.

관련 문제