RenderTargetBitmap.RenderAsync Método
Definição
Importante
Algumas informações se referem a produtos de pré-lançamento que podem ser substancialmente modificados antes do lançamento. A Microsoft não oferece garantias, expressas ou implícitas, das informações aqui fornecidas.
Sobrecargas
RenderAsync(UIElement) |
Renderiza um instantâneo de uma árvore visual UIElement em uma fonte de imagem. |
RenderAsync(UIElement, Int32, Int32) |
Renderiza um instantâneo de uma árvore visual UIElement em uma fonte de imagem. Especifique valores para scaledWidth e scaledHeight para alterar a dimensão de renderização da origem original. |
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
Parâmetros
Retornos
Um objeto IAsyncAction que você pode usar para controlar a operação assíncrona.
- Atributos
Comentários
A imagem renderizada não é retornada por esse método. Mas depois que ele retornar, desde que o valor de Status assíncrono não indique um erro, o RenderTargetBitmap que o chamou terá informações de imagem válidas. O RenderTargetBitmap pode ser atribuído no código como uma fonte de imagem para um controle Image ou uma instância imageBrush .
Se você precisar de uma representação de buffer de pixel do conteúdo renderizado e não apenas de uma fonte de imagem, use GetPixelsAsync depois de chamar RenderAsync.
Esse é um método assíncrono, portanto, não há garantia de sincronização exata de quadros com a origem da interface do usuário. Consulte Comentários em RenderTargetBitmap para obter informações sobre algumas outras limitações.
Você pode passar nulo para o parâmetro de elemento e que renderiza a árvore visual raiz do aplicativo.
Visuais XAML e recursos de captura RenderTargetBitmap
Há alguns cenários para conteúdo visual composto por XAML que você não pode capturar em um RenderTargetBitmap:
- O conteúdo de vídeo em um MediaElement ou CaptureElement não pode ser capturado usando RenderTargetBitmap. Isso inclui a captura de quadros de dentro do conteúdo de vídeo.
- O conteúdo personalizado do Microsoft DirectX (sua própria cadeia de troca) dentro de um SwapChainBackgroundPanel ou SwapChainPanel não pode ser capturado usando RenderTargetBitmap.
- O conteúdo que está na árvore, mas com sua Visibilidade definida como Recolhido , não será capturado.
- O conteúdo que não está conectado diretamente à árvore visual XAML e o conteúdo da janela main não será capturado. Isso inclui o conteúdo pop-up , que é considerado como uma sub-janela.
- Para Windows Phone aplicativo 8.x: o conteúdo de um controle WebView não pode ser renderizado em um RenderTargetBitmap.
- O conteúdo que não pode ser capturado aparecerá como em branco na imagem capturada, mas outros conteúdos na mesma árvore visual ainda poderão ser capturados e renderizados (a presença de conteúdo que não pode ser capturado não invalidará toda a captura dessa composição XAML).
- O conteúdo que está na árvore visual XAML, mas fora da tela, pode ser capturado, desde que não seja Visibilidade = Recolhida ou em outros casos restritos.
Confira também
Aplica-se a
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
Parâmetros
- scaledWidth
-
Int32
int
Especifica a largura de destino na qual renderizar. O padrão é 0. scaledWidth e/ou scaledHeight podem ser opcionais; consulte Comentários.
- scaledHeight
-
Int32
int
Especifica a altura de destino na qual renderizar. O padrão é 0. scaledWidth e/ou scaledHeight podem ser opcionais; consulte Comentários.
Retornos
Um objeto IAsyncAction que você pode usar para controlar a operação assíncrona.
- Atributos
Comentários
A imagem renderizada não é retornada por esse método. Mas depois que ele retornar, desde que o valor de Status assíncrono não indique um erro, o RenderTargetBitmap que o chamou terá informações de imagem válidas. O RenderTargetBitmap pode ser atribuído no código como uma fonte de imagem para um controle Image ou uma instância imageBrush .
Se você precisar de uma representação de buffer de pixel do conteúdo renderizado e não apenas de uma fonte de imagem, use GetPixelsAsync depois de chamar RenderAsync.
Esse é um método assíncrono, portanto, não há garantia de sincronização exata de quadros com a origem da interface do usuário. Consulte Comentários em RenderTargetBitmap para obter informações sobre algumas outras limitações.
Chamar RenderAsync falhará se a altura ou largura dimensionada da árvore visual UIElement for maior do que a quantidade de memória de vídeo que o sistema poderá alocar internamente.
Você pode passar nulo para o parâmetro de elemento e que renderiza a árvore visual raiz do aplicativo.
Valores scaledWidth e scaledHeight
Se scaledWidth e scaledHeight estiverem definidos, a taxa de proporção do bitmap original será ignorada e seus valores poderão alterar a taxa de proporção.
Se scaledWidth ou scaledHeight , mas não ambos forem especificados, o valor fornecido controla essa dimensão, mas a taxa de proporção é preservada (a outra dimensão é calculada com base na fatoração da taxa de proporção do bitmap original).
Você pode chamar esse método e deixar os valores scaledWidth e scaledHeight como 0. Nesse caso, a árvore UIElement será renderizada em seu tamanho nativo. Esse é o mesmo comportamento que a sobrecarga de RenderAsync(UIElement).
O tamanho máximo renderizado de uma árvore visual XAML é restrito pelas dimensões máximas de uma textura do Microsoft DirectX; para obter mais informações , consulte Limites de recursos (). Esse limite de recursos pode variar dependendo do hardware em que o aplicativo é executado. Conteúdo muito grande que excede esse limite pode ser dimensionado para caber. Se os limites de dimensionamento forem aplicados dessa forma, o tamanho renderizado após o dimensionamento poderá ser consultado usando as propriedades PixelWidth e PixelHeight . Por exemplo, uma árvore visual XAML de 10000 por 10000 pixels pode ser dimensionada para 4096 por 4096 pixels, um exemplo de um limite de recursos específico em texturas 2D sendo aplicadas.
Visuais XAML e recursos de captura RenderTargetBitmap
Há alguns cenários para conteúdo visual composto por XAML que você não pode capturar em um RenderTargetBitmap:
- O conteúdo de vídeo em um MediaElement ou CaptureElement não pode ser capturado usando RenderTargetBitmap. Isso inclui a captura de quadros de dentro do conteúdo de vídeo.
- O conteúdo personalizado do Microsoft DirectX (sua própria cadeia de troca) dentro de um SwapChainBackgroundPanel ou SwapChainPanel não pode ser capturado usando RenderTargetBitmap.
- O conteúdo que está na árvore, mas com sua Visibilidade definida como Recolhido , não será capturado.
- O conteúdo que não está conectado diretamente à árvore visual XAML e o conteúdo da janela main não será capturado. Isso inclui o conteúdo pop-up , que é considerado como uma sub-janela.
- Para Windows Phone aplicativo 8.x: o conteúdo de um controle WebView não pode ser renderizado em um RenderTargetBitmap.
- O conteúdo que não pode ser capturado aparecerá como em branco na imagem capturada, mas outros conteúdos na mesma árvore visual ainda poderão ser capturados e renderizados (a presença de conteúdo que não pode ser capturado não invalidará toda a captura dessa composição XAML).
- O conteúdo que está na árvore visual XAML, mas fora da tela, pode ser capturado, desde que não seja Visibilidade = Recolhida ou em outros casos restritos.