在Windows通用应用程序(WinRT)应用程序中,我试图捕获当前页面(或其中一部分)的位图图像。
谷歌搜索表明我应该使用Windows :: UI :: Xaml :: Media :: Imaging :: RenderTargetBitmap(更具体地说,它的方法RenderAsync())来捕获屏幕。
在一个小型示例应用程序中,我因此添加了此代码(C ++):
auto pclRenderTargetBitmap = ref new Windows::UI::Xaml::Media::Imaging::RenderTargetBitmap;
Concurrency::create_task(pclRenderTargetBitmap->RenderAsync(pclElem,100,100)).then([&]() {
// handling code here
});
(pclElem是一个FrameworkElement,更具体地说是一个canvas,并且不是null)
当我执行此代码时,确实创建了任务,但是从未调用“then”中的lambda。就像RenderAsync()永远不会终止一样。
有没有人有在C ++中使用此功能的经验?我错过了什么?
感谢您的回答。
答案 0 :(得分:0)
感谢Andy Rich的回答。 问题是pclRenderTargetBitmap超出了范围。 这可以通过将值传递lambda参数来解决:
auto pclRenderTargetBitmap = ref new Windows::UI::Xaml::Media::Imaging::RenderTargetBitmap;
Concurrency::create_task(pclRenderTargetBitmap->RenderAsync(pclElem,100,100)).then([=]() {
// handling code here
});