PixelHeightプロパティとPixelWidthプロパティを取得したいBitmapImageがあるので、横向きと縦向きのどちらのレイアウトかを判断できます。レイアウトを決定したら、画像の高さまたは幅を設定して、高さ:幅の比率を歪めずに画像ビューアウィンドウに収まるようにする必要があります。ただし、画像を処理するには、BeginInit()を呼び出す必要があるようです。PixelHeightまたはPixelWidthプロパティを取得するにはEndInit()を呼び出す必要があり、同じBitmapImageオブジェクトでBeginInit()を複数回呼び出すことはできません。では、どうすれば画像を設定し、高さと幅を取得し、その向きを決定してから、画像のサイズを変更できますか?
これが私が扱ってきたコードのチャンクです:
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();
これを実行すると、次の実行時例外が発生します。
InvalidOperationException:
BitmapImageの初期化が完了していません。EndInitメソッドを呼び出して、初期化を完了します。
誰かがこの問題に対処する方法を知っていますか?