RenderTargetBitmap 应该如何使用?
How should RenderTargetBitmap be used?
在 Windows Universal App (WinRT) 应用程序中,我正在尝试捕获当前页面(或其一部分)的位图图像。
google 搜索表明我应该使用 class 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,并且不为空)
当我执行这段代码时,确实创建了任务,但从未调用 "then" 中的 lambda。就好像 RenderAsync() 永远不会终止。
有没有人有在 C++ 中使用此函数的经验?我错过了什么?
感谢您的回答。
感谢 Andy Rich 的回答。
问题是 pcl RenderTargetBitmap 超出了范围。
这可以通过按值传递 lambda 参数来解决:
auto pclRenderTargetBitmap = ref new Windows::UI::Xaml::Media::Imaging::RenderTargetBitmap;
Concurrency::create_task(pclRenderTargetBitmap->RenderAsync(pclElem,100,100)).then([=]() {
// handling code here
});
在 Windows Universal App (WinRT) 应用程序中,我正在尝试捕获当前页面(或其一部分)的位图图像。
google 搜索表明我应该使用 class 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,并且不为空)
当我执行这段代码时,确实创建了任务,但从未调用 "then" 中的 lambda。就好像 RenderAsync() 永远不会终止。
有没有人有在 C++ 中使用此函数的经验?我错过了什么?
感谢您的回答。
感谢 Andy Rich 的回答。 问题是 pcl RenderTargetBitmap 超出了范围。 这可以通过按值传递 lambda 参数来解决:
auto pclRenderTargetBitmap = ref new Windows::UI::Xaml::Media::Imaging::RenderTargetBitmap;
Concurrency::create_task(pclRenderTargetBitmap->RenderAsync(pclElem,100,100)).then([=]() {
// handling code here
});