在(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,更确切地说是一个画布,不是null)
当我执行这段代码时,任务确实会被创建,但是“那时”中的lambda永远不会被调用。就好像RenderAsync()永远不会终止。
有人有在C++中使用这个函数的经验吗?我错过了什么?
谢谢你的回答。
发布于 2016-02-09 10:50:41
感谢安迪·里奇的回答。问题是pclRenderTargetBitmap已经超出了范围。这可以通过按值传递lambda参数来解决:
auto pclRenderTargetBitmap = ref new Windows::UI::Xaml::Media::Imaging::RenderTargetBitmap;
Concurrency::create_task(pclRenderTargetBitmap->RenderAsync(pclElem,100,100)).then([=]() {
// handling code here
});https://stackoverflow.com/questions/34990213
复制相似问题