Compartilhar via


Efeito Atlas

Você pode usar esse efeito para gerar uma parte de uma imagem, mas manter a região fora da parte para uso em operações subsequentes.

O CLSID para esse efeito é CLSID_D2D1Atlas.

O efeito atlas será útil se você quiser carregar uma imagem grande composta por muitas imagens menores, como vários quadros de um sprite.

Para criar a saída, o efeito:

  1. Corta a entrada para a propriedade InputRect fornecida.
  2. Converte a origem do resultado para (0,0).

Observação

A propriedade InputPaddingRect só deverá ser maior se e somente se os pixels entre os dois retângulos forem preto transparentes na entrada. Isso pode resultar em Direct2D executar o grafo de forma mais ideal.

Aqui está um exemplo do efeito . Essa imagem é pequena e simples para fins de ilustração.

imagem de entrada.

A imagem anterior é a entrada para o efeito . O código aqui cria um efeito atlas, define a entrada, define o retângulo de entrada e desenha a saída.

ComPtr<ID2D1Effect> atlasEffect;

// Create the Atlas Effect.
DX::ThrowIfFailed(m_d2dContext->CreateEffect(CLSID_D2D1Atlas, &atlasEffect));

// Set the input.
atlasEffect->SetInputEffect(0, inputImage.Get());

// The images here are 150 x 150 pixels.
float size = 150.0f;

// Compensate for the padding between images.
float padding = 10.0f;

// The input rectangle.  150 x 150 pixels with 10 pixel padding
D2D1_Vector_4F inputRect = D2D1::Vector4F(size + (padding * 2), padding, size, size);

DX::ThrowIfFailed(atlasEffect->SetValue(D2D1_ATLAS_PROP_INPUT_RECT, inputRect));

// Draw the image
m_d2dContext->DrawImage(atlasEffect.Get());

O código anterior seleciona um retângulo que está ao redor do segundo triângulo. O preenchimento ao redor dele é ignorado. Aqui está a imagem resultante.

imagem de saída.

Observação

Essa é uma situação em que você pode optar por especificar um InputPaddingRect porque o preenchimento é preto transparente. O retângulo seria D2D1::Vector4F(size + (padding * 2), 0, size + padding, size + padding);.

Propriedades de efeito

Nome de exibição e enumeração de índice Descrição
InputRect
D2D1_ATLAS_PROP_INPUT_RECT
A parte da imagem passada para o próximo efeito.
O tipo é D2D1_VECTOR_4F.
O valor padrão é (-FLT_MAX, -FLT_MAX, FLT_MAX, FLT_MAX).
InputPaddingRect
D2D1_ATLAS_PROP_INPUT_PADDING_RECT
O tamanho máximo amostrado para o retângulo de saída.
O tipo é D2D1_VECTOR_4F.
O valor padrão é (-FLT_MAX, -FLT_MAX, FLT_MAX, FLT_MAX).

Requisitos

Requisito Valor
Cliente mínimo com suporte Windows 8 e Atualização de Plataforma para Windows 7 [aplicativos da área de trabalho | Aplicativos da Windows Store]
Servidor mínimo com suporte Windows 8 e Atualização de Plataforma para Windows 7 [aplicativos da área de trabalho | Aplicativos da Windows Store]
Cabeçalho d2d1effects.h
Biblioteca d2d1.lib, dxguid.lib

ID2D1Effect