У меня есть BitmapImage, для которого я хочу получить свойства PixelHeight и PixelWidth, чтобы определить, имеет ли он альбомную или портретную ориентацию. После того, как я определил его макет, мне нужно установить высоту или ширину изображения, чтобы оно поместилось в моем окне просмотра изображений, не искажая соотношение высоты и ширины. Однако, похоже, мне нужно вызвать BeginInit(), чтобы что-то сделать с моим изображением. Мне нужно вызвать EndInit(), чтобы получить свойства PixelHeight или PixelWidth, и я не могу вызывать BeginInit() более одного раза для одного и того же объекта 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();
Когда я запускаю это, я получаю это исключение времени выполнения:
ИнвалидОператионИсключение:
Инициализация BitmapImage не завершена. Вызовите метод EndInit, чтобы завершить инициализацию.
Кто-нибудь знает, как справиться с этой проблемой?
DecodePixelWidth
илиDecodePixelHeight
? Разве вы не можете просто поместить изображение в элемент управленияImage
с подходящим размером? - person Clemens   schedule 15.02.2013