0

在 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,更具体地说是一个画布,并且不为空)

当我执行此代码时,确实创建了任务,但从未调用过“then”中的 lambda。就好像 RenderAsync() 永远不会终止。

有没有人有在 C++ 中使用这个函数的经验?我错过了什么?

感谢您的回答。

4

1 回答 1

0

感谢安迪·里奇的回答。问题是 pclRenderTargetBitmap 超出了范围。这可以通过按值传递 lambda 参数来解决:

auto pclRenderTargetBitmap = ref new  Windows::UI::Xaml::Media::Imaging::RenderTargetBitmap;
Concurrency::create_task(pclRenderTargetBitmap->RenderAsync(pclElem,100,100)).then([=]() {
      // handling code here
});
于 2016-02-09T10:50:41.307 回答