渲染控制到WinRT的地铁图片(Render control into image in WinRT

2019-09-23 03:56发布

我创建一个应用程序为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