我创建一个应用程序为Windows 8地铁,我需要渲染的框架控制成图像并将其保存到硬盘上,但不知道怎么办。 我可以使用SharpDX这个? 我能怎么做? 先谢谢您的帮助
Answer 1:
如果循这个线索地铁,为什么它不会工作限制的原因进行解释。 它的实质是:
很抱歉,但渲染XAML中的元素或捕获自己的应用程序的屏幕截图,并没有使其进入发行版。 它是由一个应用程序无法获取其他应用的截屏的设计。
提到的解决方法是:
我的意思是 - 你可以借鉴使用的Direct2D图形,文本和图像。 ,否则你将与XAML UI绘制相同的形状。 我并不是暗示你可以渲染XAML控制 - 只是你可以使用的Direct2D作为替代来实现相同的结果,尽管有几分更多的努力。
Answer 2:
justin.m.chase的方法,如果你不介意的添加依赖于SharpDX组件肯定的作品。 该RenderTargetBitmap类可能是一个很好的适合你正在尝试完成的任务。
// Render XAML to bitmap
var bitmap = new RenderTargetBitmap();
await bitmap.RenderAsync(elementToRender);
// get the pixels
IBuffer pixelBuffer = await bitmap.GetPixelsAsync();
byte[] pixels = pixelBuffer.ToArray();
// write the pixels to a InMemoryRandomAccessStream
var stream = new InMemoryRandomAccessStream();
var encoder = await BitmapEncoder.CreateAsync(BitmapEncoder.BmpEncoderId, stream);
encoder.SetPixelData(BitmapPixelFormat.Bgra8, BitmapAlphaMode.Straight, (uint)bitmap.PixelWidth, (uint)bitmap.PixelHeight, 96, 96, pixels);
await encoder.FlushAsync();
stream.Seek(0);
Answer 3:
我很抱歉,这是不可能的。 该WritableBitmap类的渲染()方法是目前不足以完成你想要什么。 出于同样的原因截图不能在这个时候被创建。 但是,这些都是对积压的东西! 但是,现在你知道了。
Answer 4:
因为我觉得这是一个比较正确的答案,我想重申的是,评论Zeeshan在原来的问题提出。
还有是在WinRT中的XAML工具包中的扩展方法。 http://winrtxamltoolkit.codeplex.com/.../WriteableBitmapRenderExtensions.cs
通过安装掘金:
> Install-Package WinRTXamlToolkit.Composition
添加使用:
using WinRTXamlToolkit.Composition;
渲染XAML中:
var bitmap = await element.Render();
文章来源: Render control into image in WinRT metro