BitmapSource topHalf = new CroppedBitmap(sourceBitmap, topRect);
BitmapSource bottomHalf = new CroppedBitmap(sourceBitmap, bottomRect);
Результат не BitmapImage
, но он все еще действительный ImageSource
, который должен быть в порядке, если вы просто хотите отобразить его.
РЕДАКТИРОВАТЬ: на самом деле естьспособ сделать это, но это довольно уродливо ... Вам необходимо создать Image
элемент управления с исходным изображением и использовать метод WriteableBitmap.Render
для его рендеринга.
Image imageControl = new Image();
imageControl.Source = originalImage;
// Required because the Image control is not part of the visual tree (see doc)
Size size = new Size(originalImage.PixelWidth, originalImage.PixelHeight);
imageControl.Measure(size);
Rect rect = new Rect(new Point(0, 0), size);
imageControl.Arrange(ref rect);
WriteableBitmap topHalf = new WriteableBitmap(originalImage.PixelWidth, originalImage.PixelHeight / 2);
WriteableBitmap bottomHalf = new WriteableBitmap(originalImage.PixelWidth, originalImage.PixelHeight / 2);
Transform transform = new TranslateTransform();
topHalf.Render(originalImage, transform);
transform.Y = originalImage.PixelHeight / 2;
bottomHalf.Render(originalImage, transform);
Отказ от ответственности: этокод полностью не проверен;)