RenderTargetBitmap.RenderAsync Метод
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Перегрузки
RenderAsync(UIElement) |
Отрисовывает snapshot визуального дерева UIElement в источник изображения. |
RenderAsync(UIElement, Int32, Int32) |
Отрисовывает snapshot визуального дерева UIElement в источник изображения. Укажите значения scaledWidth и scaledHeight , чтобы изменить измерение отрисовки исходного источника. |
RenderAsync(UIElement)
public:
virtual IAsyncAction ^ RenderAsync(UIElement ^ element) = RenderAsync;
/// [Windows.Foundation.Metadata.Overload("RenderAsync")]
/// [Windows.Foundation.Metadata.RemoteAsync]
IAsyncAction RenderAsync(UIElement const& element);
[Windows.Foundation.Metadata.Overload("RenderAsync")]
[Windows.Foundation.Metadata.RemoteAsync]
public IAsyncAction RenderAsync(UIElement element);
function renderAsync(element)
Public Function RenderAsync (element As UIElement) As IAsyncAction
Параметры
- element
- UIElement
Элемент UIElement, представляющий фрагмент визуального дерева для отрисовки.
Возвращаемое значение
Объект IAsyncAction , который можно использовать для управления асинхронной операцией.
- Атрибуты
Комментарии
Отрисованное изображение не возвращается этим методом. Но после возврата, если значение асинхронного состояния не указывает на ошибку, объект RenderTargetBitmap , который его вызвал, будет иметь допустимые сведения об изображении. Затем RenderTargetBitmap можно назначить в коде в качестве источника изображения для элемента управления Image или экземпляра ImageBrush .
Если требуется представление отображаемого содержимого в буфере пикселей, а не только источника изображения, используйте Метод GetPixelsAsync после вызова RenderAsync.
Это асинхронный метод, поэтому нет гарантии точной синхронизации кадров с источником пользовательского интерфейса. Дополнительные сведения о некоторых других ограничениях см. в разделе Примечания в RenderTargetBitmap .
Вы можете передать значение NULL для параметра элемента , который отрисовывает корневое визуальное дерево приложения.
Визуальные элементы XAML и возможности захвата RenderTargetBitmap
Существует несколько сценариев для визуального содержимого, состоящего из XAML, которое невозможно записать в RenderTargetBitmap:
- Видеосодержимое в MediaElement или CaptureElement не может быть записано с помощью RenderTargetBitmap. Это включает в себя захват кадров из видеосодержимого.
- Пользовательское содержимое Microsoft DirectX (ваша собственная цепочка буферов) внутри SwapChainBackgroundPanel или SwapChainPanel не может быть записано с помощью RenderTargetBitmap.
- Содержимое, которое находится в дереве, но для параметра Видимость установлено значение Свернуто , не будет захватываться.
- Содержимое, которое не подключено непосредственно к визуальному дереву XAML, и содержимое окна main не будет захватываться. Сюда входит содержимое всплывающего окна , которое считается как вложенное окно.
- Для приложения Windows Phone версии 8.x содержимое элемента управления WebView не может быть отрисовано в RenderTargetBitmap.
- Содержимое, которое не может быть записано, будет отображаться как пустое на изображении, но другое содержимое в том же визуальном дереве по-прежнему может быть записано и отрисовывается (наличие содержимого, которое не может быть записано, не сделает недействительным весь захват этой композиции XAML).
- Содержимое, которое находится в визуальном дереве XAML, но за экраном, можно захватывать, если оно не = свернуто или в других ограниченных случаях.
См. также раздел
Применяется к
RenderAsync(UIElement, Int32, Int32)
public:
virtual IAsyncAction ^ RenderAsync(UIElement ^ element, int scaledWidth, int scaledHeight) = RenderAsync;
/// [Windows.Foundation.Metadata.Overload("RenderToSizeAsync")]
/// [Windows.Foundation.Metadata.RemoteAsync]
IAsyncAction RenderAsync(UIElement const& element, int const& scaledWidth, int const& scaledHeight);
[Windows.Foundation.Metadata.Overload("RenderToSizeAsync")]
[Windows.Foundation.Metadata.RemoteAsync]
public IAsyncAction RenderAsync(UIElement element, int scaledWidth, int scaledHeight);
function renderAsync(element, scaledWidth, scaledHeight)
Public Function RenderAsync (element As UIElement, scaledWidth As Integer, scaledHeight As Integer) As IAsyncAction
Параметры
- element
- UIElement
Элемент UIElement, представляющий фрагмент визуального дерева для отрисовки.
- scaledWidth
-
Int32
int
Указывает целевую ширину, по которой выполняется отрисовка. Значение по умолчанию равно 0. scaledWidth и (или) scaledHeight могут быть необязательными; См. примечания.
- scaledHeight
-
Int32
int
Указывает целевую высоту, с которой выполняется отрисовка. Значение по умолчанию равно 0. scaledWidth и (или) scaledHeight могут быть необязательными; См. примечания.
Возвращаемое значение
Объект IAsyncAction , который можно использовать для управления асинхронной операцией.
- Атрибуты
Комментарии
Отрисованное изображение не возвращается этим методом. Но после возврата, если значение асинхронного состояния не указывает на ошибку, объект RenderTargetBitmap , который его вызвал, будет иметь допустимые сведения об изображении. Затем RenderTargetBitmap можно назначить в коде в качестве источника изображения для элемента управления Image или экземпляра ImageBrush .
Если требуется представление отображаемого содержимого в буфере пикселей, а не только источника изображения, используйте Метод GetPixelsAsync после вызова RenderAsync.
Это асинхронный метод, поэтому нет гарантии точной синхронизации кадров с источником пользовательского интерфейса. Дополнительные сведения о некоторых других ограничениях см. в разделе Примечания в RenderTargetBitmap .
Вызов RenderAsync завершится ошибкой , если масштабируемая высота или ширина визуального дерева UIElement превышает объем видеопамяти, который система может выделить внутренне.
Вы можете передать значение NULL для параметра элемента , который отрисовывает корневое визуальное дерево приложения.
значения scaledWidth и scaledHeight
Если заданы значения scaledWidth и scaledHeight , пропорции исходного растрового изображения игнорируются, и ваши значения могут изменить пропорции.
Если указан параметр scaledWidth или scaledHeight , но не оба, то указанное значение определяет это измерение, но пропорции сохраняются (другое измерение вычисляется на основе разбиения пропорций исходного растрового рисунка).
Можно вызвать этот метод и оставить значения scaledWidth и scaledHeight как 0. В этом случае дерево UIElement будет отображаться в собственном размере. Это то же поведение, что и перегрузка RenderAsync(UIElement).
Максимальный размер отображаемого визуального дерева XAML ограничивается максимальными размерами текстуры Microsoft DirectX; Дополнительные сведения см. в разделе Ограничения ресурсов (). Это ограничение ресурсов может отличаться в зависимости от оборудования, на котором выполняется приложение. Очень большое содержимое, превышающее это ограничение, может быть масштабировано по размеру. Если ограничения масштабирования применяются таким образом, отображаемый размер после масштабирования можно запросить с помощью свойств PixelWidth и PixelHeight . Например, визуальное дерево XAML 10000 на 10000 пикселей может быть масштабировано до 4096 на 4096 пикселей, что является примером конкретного ограничения ресурсов для двухd-текстур.
Визуальные элементы XAML и возможности захвата RenderTargetBitmap
Существует несколько сценариев для визуального содержимого, состоящего из XAML, которое невозможно записать в RenderTargetBitmap:
- Видеосодержимое в MediaElement или CaptureElement не может быть записано с помощью RenderTargetBitmap. Это включает в себя захват кадров из видеосодержимого.
- Пользовательское содержимое Microsoft DirectX (ваша собственная цепочка буферов) внутри SwapChainBackgroundPanel или SwapChainPanel не может быть записано с помощью RenderTargetBitmap.
- Содержимое, которое находится в дереве, но для параметра Видимость установлено значение Свернуто , не будет захватываться.
- Содержимое, которое не подключено непосредственно к визуальному дереву XAML, и содержимое окна main не будет захватываться. Сюда входит содержимое всплывающего окна , которое считается как вложенное окно.
- Для приложения Windows Phone версии 8.x содержимое элемента управления WebView не может быть отрисовано в RenderTargetBitmap.
- Содержимое, которое не может быть записано, будет отображаться как пустое на изображении, но другое содержимое в том же визуальном дереве по-прежнему может быть записано и отрисовывается (наличие содержимого, которое не может быть записано, не сделает недействительным весь захват этой композиции XAML).
- Содержимое, которое находится в визуальном дереве XAML, но за экраном, можно захватывать, если оно не = свернуто или в других ограниченных случаях.