PixelHeight 및 PixelWidth 속성을 가져 와서 가로 또는 세로 레이아웃이 있는지 여부를 확인할 수있는 BitmapImage가 있습니다. 레이아웃을 결정한 후에는 높이 : 너비를 왜곡하지 않고 이미지 뷰어 창에 맞도록 이미지의 높이 또는 너비를 설정해야합니다. 그러나 그것은 내 이미지로 무엇이든 할 수 BeginInit() 호출해야 나타납니다. PixelHeight 또는 PixelWidth 속성을 가져 오려면 EndInit()을 호출해야하며 동일한 BitmapImage 객체에서 BeginInit()을 두 번 이상 호출 할 수 없습니다. 그렇다면 이미지를 설정하고, 높이와 너비를 얻고, 방향을 결정한 다음 이미지의 크기를 조정하는 방법은 무엇입니까?BitmapImage PixelHeight 속성을 가져 오면 초기화 문제가 발생합니다.
다음내가 작업 한 코드의 덩어리 :
경우 InvalidOperationException :
BitmapImage 초기화 내가 이것을 실행하면
image.BeginInit(); Uri imagePath = new Uri(path + "\\" + die.Die.ImageID + "_" + blueTape + "_BF.BMP"); image.UriSource = imagePath; //image.EndInit(); imageHeight = image.PixelHeight; imageWidth = image.PixelWidth; //image.BeginInit(); // If the image is taller than it is wide, limit the height of the image // i.e. DML87s and all non-rotated AOI devices if (imageHeight > imageWidth) { image.DecodePixelHeight = 357; } else { image.DecodePixelWidth = 475; } image.EndInit();
,이 런타임 예외가 완료되지 않았습니다. 초기화를 완료하려면 EndInit 메서드를 호출하십시오.
아무도이 문제를 해결하는 방법을 알고 있습니까?
왜 'DecodePixelWidth' 또는'DecodePixelHeight'를 모두 설정해야합니까? 이미지를 적당한 크기의'Image' 컨트롤에 넣을 수는 없습니까? – Clemens
원래 크기로 이미지를로드 한 다음 나중에 ScaleTransform을 사용하여 원하는 효과를 얻는 것이 더 쉬워 진 것 같습니다. –
@Clemens : DecodePixel (높이/너비) 속성 (y/ies)을 설정하지 않으면 이미지가 정상 크기가되고 패널에 제대로 맞지 않습니다. 내 이미지는 이미지에 따라 1216x1616 또는 1616x1216입니다. 한면의 최대 길이가 475 픽셀보다 커야합니다. – kformeck