Как следует использовать RenderTargetBitmap?
В приложении Windows Universal App (WinRT) я пытаюсь получить растровое изображение текущей страницы (или ее части).
Поиск в Google показал, что я должен использовать класс 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, точнее холст, и не ноль)
Когда я выполняю этот код, задача действительно создается, но лямбда в "тогда" никогда не вызывается. Как будто RenderAsync() никогда не завершается.
У кого-нибудь есть опыт использования этой функции в C++? Что мне не хватает?
Спасибо за ваши ответы.
1 ответ
Спасибо Энди Ричу за его ответ. Проблема заключалась в том, что pclRenderTargetBitmap выходил из области видимости. Это может быть решено путем передачи лямбда-параметров по значению:
auto pclRenderTargetBitmap = ref new Windows::UI::Xaml::Media::Imaging::RenderTargetBitmap;
Concurrency::create_task(pclRenderTargetBitmap->RenderAsync(pclElem,100,100)).then([=]() {
// handling code here
});