Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
Observação
Para aplicativos no Windows 10, recomendamos o uso de APIs Windows.UI.Composition em vez de DirectComposition. Para saber mais, veja Modernizar seu aplicativo da área de trabalho usando a camada Visual.
Este tópico discute o suporte do Microsoft DirectComposition para transformações afins (lineares) bidimensionais (2D) e descreve os tipos de transformações suportadas pelo DirectComposition.
DirectComposition também suporta transformações de perspetiva 3D, mas como elas exigem a criação de um bitmap intermediário, DirectComposition as considera efeitos em vez de transformações. Para obter informações sobre efeitos de transformação de perspetiva 3D, consulte Effects.
Este tópico inclui as seguintes seções:
- O que é uma transformação DirectComposition 2D?
- O espaço de coordenadas DirectComposition 2D
- Suporte para transformações 2D afins
- Matrix 2D transforma
- Transformar grupos
- Transformar animação
- Tópicos relacionados
O que é uma transformação DirectComposition 2D?
Uma transformação 2D permite alterar a posição, o tamanho ou a natureza de um visual em duas dimensões, movendo o visual para outro local (translação), tornando-o maior ou menor (escala), girando-o (rotação) ou distorcendo sua forma (inclinação).
Uma transformação 2D é obtida mapeando os pontos de um visual de uma posição para outra dentro do mesmo espaço de coordenadas, ou de um espaço de coordenadas para outro. Esse mapeamento é descrito por uma tabela de valores chamada matriz de transformação, definida como uma coleção de três linhas com três colunas de valores de vírgula flutuante, conforme mostrado na tabela a seguir.
M11Padrão: 1.0
M21Padrão: 0.0
M31OffsetX: 0,0
M12Padrão: 0.0
M22Padrão: 1.0
M32OffsetY: 0,0
0.0
0.0
1.0
A matriz de transformação para transformações 2D afins é uma matriz 3 por 2 que omite a terceira coluna da matriz de transformação anterior. A tabela a seguir mostra o layout dessa matriz.
M11Padrão: 1.0
M21Padrão: 0.0
M31OffsetX: 0,0
M12Padrão: 0.0
M22Padrão: 1.0
M32OffsetY: 0,0
Observação
O DirectComposition não faz nenhum processamento especial ao aplicar transformações 2D a conteúdo estéreo. Isso significa que o conteúdo 3D pode parecer distorcido quando uma transformação 2D é aplicada a ele.
O espaço de coordenadas DirectComposition 2D
DirectComposition usa um espaço de coordenadas 2D canhoto; ou seja, os valores positivos do eixo x aumentam para a direita e os valores positivos do eixo y aumentam para baixo. Os elementos visuais são posicionados em relação à origem, que é o ponto onde os eixos x e y se cruzam (0, 0), como mostra a ilustração a seguir.
Ao manipular valores em uma matriz de transformação 3 por 2, você pode girar, dimensionar, distorcer e traduzir um objeto em duas dimensões. Por exemplo, se você definir OffsetX como 100 e OffsetY como 200, moverá o objeto para a direita 100 pixels e para baixo 200 pixels.
Suporte para transformações 2D afins
A tabela a seguir descreve os tipos de transformações 2D afins suportadas pelo DirectComposition e lista as interfaces que você pode usar para executar os vários tipos de transformações.
| Transformação/interface | Descrição | Ilustração |
|---|---|---|
| Girar 2D IDCompositionRotateTransform | Rode um visual pelo ângulo especificado sobre o ponto central especificado. |
|
| Escala 2D IDCompositionScaleTransform | Dimensione um visual pelo fator especificado sobre o ponto central especificado. |
|
| Inclinar 2D IDCompositionSkewTransform | incline um visual pelo ângulo especificado ao longo dos eixos x e y e em torno do ponto central especificado. |
|
| Definição da palavra 2D IDCompositionTranslateTransform | Altere a posição de um visual na direção dos eixos x e y. |
|
Transformações Matrix 2D
A interfaceIDCompositionMatrixTransformpermite que você defina sua própria matriz de transformação 2D afim 3 por 2 e aplique-a a um visual. Essa interface é útil se você precisar aplicar um tipo de transformação 2D afim que não está disponível por meio de outras interfaces de transformação DirectComposition. Você define a matriz preenchendo uma estrutura D2D_MATRIX_3X2_F e passando-a para o método IDCompositionMatrixTransform::SetMatrix.
Transformar grupos
Você pode usar grupos de transformação para combinar várias transformações em uma. Um grupo de transformação define uma coleção de objetos de transformação cujas matrizes são multiplicadas juntas na ordem em que são especificadas na coleção. A matriz de transformação resultante é então aplicada ao visual. Um grupo de transformação produz o mesmo resultado que aplicar cada transformação separadamente.
Lembre-se de que a ordem dos objetos de transformação em um grupo de transformação é importante. Por exemplo, se um visual é primeiro girado, depois dimensionado e, em seguida, traduzido, o resultado é diferente do que se o visual for primeiro traduzido, depois girado e, em seguida, dimensionado. DirectComposition sempre aplica as transformações a um visual na ordem em que são especificadas na coleção.
Para criar um grupo de transformações, primeiro crie os objetos de transformação que você deseja incluir no grupo e, em seguida, passe uma matriz de ponteiros de objeto de transformação para o IDCompositionDevice::CreateTransformGroup método. Depois de criar um grupo de transformação, não é possível adicionar ou remover nenhum objeto de transformação. No entanto, você pode modificar as propriedades dos objetos de transformação individuais na coleção e as alterações serão refletidas na matriz de transformação resultante.
Transformar animação
As propriedades de uma transformação podem ser animadas. Quando uma propriedade é animada, DirectComposition altera o valor da propriedade ao longo do tempo, em vez de tudo de uma vez. Isso é particularmente útil ao criar transições. Para obter mais informações, consulte Animation.