Приложение для Магазина Windows - WriteableBitmap, метод blit
Хорошо, я пытаюсь объединить два изображения (наложить одно изображение поверх другого), используя метод blit библиотеки writeablebitmapex. И после применения блита я получаю только прозрачное изображение без содержимого.
Я хотел бы наложить изображение занавеса поверх изображения окна.
Исходный код:
WriteableBitmap photoWriteableBitMap = await new WriteableBitmap(1,1).FromContent(new Uri("ms-appx:///Curtain1.jpg"));
WriteableBitmap frameWriteableBitMap = await new WriteableBitmap(1, 1).FromContent(new Uri("ms-appx:///Window1.jpg"));
var merge = new WriteableBitmap(750, 750);
merge.Blit(new Rect(0, 0, 100, 100), photoWriteableBitMap, new Rect(0, 0, photoWriteableBitMap.PixelWidth, photoWriteableBitMap.PixelHeight));
merge.Blit(new Rect(0, 0, 200, 200), frameWriteableBitMap, new Rect(0, 0, frameWriteableBitMap.PixelWidth, frameWriteableBitMap.PixelHeight));
// Assign the merged writeable bitmap to the image source.
imgMain.Source = merge;
Пожалуйста, дайте мне знать, что я делаю неправильно.
1 ответ
Решение
Я нашел ответ на свое решение в случае, если кто-то наткнется здесь.
Во-первых, я излишне пытался включить дополнительное растровое изображение (слияние) для желаемого результата.
Все, что мне нужно было сделать, это применить блик к изображению окна и правильно установить исходные и конечные прямоугольники.
Ниже приведен окончательный код, который работает для меня,
WriteableBitmap photoWriteableBitMap = await new WriteableBitmap(1, 1).FromContent(new Uri("ms-appx:///Curtain1.jpg"));
WriteableBitmap frameWriteableBitMap = await new WriteableBitmap(1, 1).FromContent(new Uri("ms-appx:///Window1.jpg"));
frameWriteableBitMap.Blit(new Rect(300, 100, 250, 200), photoWriteableBitMap, new Rect(0, 0, photoWriteableBitMap.PixelWidth , photoWriteableBitMap.PixelHeight));