如何在Windows 8中保存与背景一起的笔画

本文关键字:背景 一起 笔画 保存 Windows | 更新日期: 2023-09-27 18:09:53

我有一个透明背景的画布。在上面画了几笔。使用InkManager类的SaveAsync方法保存时,只保存笔画,不保存透明背景。有什么方法可以保存背景吗?

如果有一种方法,我可以渲染InkManager笔画上的WritableBitmap ?

这是我当前的保存方式。

StorageFile Ink_File = await m_localfolder.CreateFileAsync(path, CreationCollisionOption.ReplaceExisting);
using (var stream = await Ink_File.OpenAsync(Windows.Storage.FileAccessMode.ReadWrite))
{
    using (var outputStream = stream.GetOutputStreamAt(0))
    {
        uint x = await i.SaveAsync(outputStream);
        await outputStream.FlushAsync();
    }
}

如何在Windows 8中保存与背景一起的笔画

硬道:

在纯c#中做到这一点的方法是"加载"渲染的GIF背景作为WritableBitmap s使用到内存中。当你有了两位的位图表示后,将像素数据从背景位图的PixelBuffer复制到byte[],你将使用它来合成顶部的笔画。现在使用GIF图像的PixelBuffer,通过丢弃所有的透明像素,结合任何不在你的byte[]上的像素,开始作为普通背景图像,小心这里的尺寸,因为你必须做一点数学计算,以找出byte对应于什么像素上的什么颜色通道。这些都很严格,但并不难。

最简单的方法:

幸运的是,有人把所有这些byte[]操作的东西打包成一个人们似乎很喜欢的漂亮的便携式库,可以在这里获得:http://writeablebitmapex.codeplex.com/

基本上,该库将为您提供正常绘图和"比特化"(又名比特块传输)功能。因此,现在你应该能够将透明图像"blt"到不透明图像的顶部,只需几行代码就可以得到你的合成图像。没有混乱,没有循环……-ck