如何在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();
}
}
硬道:
在纯c#中做到这一点的方法是"加载"渲染的GIF和背景作为WritableBitmap
s使用到内存中。当你有了两位的位图表示后,将像素数据从背景位图的PixelBuffer
复制到byte[]
,你将使用它来合成顶部的笔画。现在使用GIF图像的PixelBuffer
,通过丢弃所有的透明像素,结合任何不在你的byte[]
上的像素,开始作为普通背景图像,小心这里的尺寸,因为你必须做一点数学计算,以找出byte
对应于什么像素上的什么颜色通道。这些都很严格,但并不难。最简单的方法:
幸运的是,有人把所有这些byte[]
操作的东西打包成一个人们似乎很喜欢的漂亮的便携式库,可以在这里获得:http://writeablebitmapex.codeplex.com/
基本上,该库将为您提供正常绘图和"比特化"(又名比特块传输)功能。因此,现在你应该能够将透明图像"blt"到不透明图像的顶部,只需几行代码就可以得到你的合成图像。没有混乱,没有循环……-ck