Windows应用商店应用 - WriteableBitmap,blit方法

时间:2016-02-10 07:28:22

标签: c# windows-store-apps blit writeablebitmapex

好吧,我正在尝试使用writeablebitmapex库的blit方法合并两个图像(将一个图像叠加在另一个上面)。在应用了blit后,我得到的是一个没有内容的透明图像。

我想将窗帘图像叠加在窗口图像的顶部。

源代码:

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; 

预期图片Expected image

实际图片Actual image

请让我知道我做错了什么。

1 个答案:

答案 0 :(得分:1)

我找到了解决方案,以防万一有人偶然发现。

首先,我不必要地尝试为所需的输出添加额外的位图(合并)。

我所要做的就是在窗口图像上应用blit并适当地设置源矩形和目标矩形。

以下是适用于我的最终代码,

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));

这是我最终图片的外观:enter image description here