Efeito de transformação da perspectiva 3D
Use o efeito de transformação de perspectiva 3D para girar a imagem em três dimensões como se fosse exibida à distância.
A transformação de perspectiva 3D é mais conveniente do que o efeito de transformação 3D, mas expõe apenas um subconjunto da funcionalidade. Você pode calcular uma matriz de transformação 3D completa e aplicar uma matriz de transformação mais arbitrária a uma imagem usando a transformação 3D efeito.
O CLSID para esse efeito é CLSID_D2D13DPerspectiveTransform.
- de imagem de exemplo
- propriedades do efeito
- modos de interpolação
- modos de borda
- de bitmap de saída
- requisitos de
- tópicos relacionados
Imagem de exemplo
Antes |
---|
![]() |
Depois |
![]() |
ComPtr<ID2D1Effect> perspectiveTransformEffect;
m_d2dContext->CreateEffect(CLSID_D2D13DPerspectiveTransform, &perspectiveTransformEffect);
perspectiveTransformEffect->SetInput(0, bitmap);
perspectiveTransformEffect->SetValue(D2D1_3DPERSPECTIVETRANSFORM_PROP_PERSPECTIVE_ORIGIN, D2D1::Vector3F(0.0f, 192.0f, 0.0f));
perspectiveTransformEffect->SetValue(D2D1_3DPERSPECTIVETRANSFORM_PROP_ROTATION, D2D1::Vector3F(0.0f, 30.0f, 0.0f));
m_d2dContext->BeginDraw();
m_d2dContext->DrawImage(perspectiveTransformEffect.Get());
m_d2dContext->EndDraw();
Propriedades de efeito
Nome de exibição e enumeração de índice | Descrição |
---|---|
InterpolationMode D2D1_3DPERSPECTIVETRANSFORM_PROP_INTERPOLATION_MODE |
O modo de interpolação que o efeito usa na imagem. Há cinco modos de escala que variam em qualidade e velocidade. O tipo é D2D1_3DPERSPECTIVETRANSFORM_INTERPOLATION_MODE. O valor padrão é D2D1_3DPERSPECTIVETRANSFORM_INTERPOLATION_MODE_LINEAR. |
BorderMode D2D1_3DPERSPECTIVETRANSFORM_PROP_BORDER_MODE |
O modo usado para calcular a borda da imagem, flexível ou dura. Consulte modos de borda para obter mais informações. O tipo é D2D1_BORDER_MODE. O valor padrão é D2D1_BORDER_MODE_SOFT. |
Profundidade D2D1_3DPERSPECTIVETRANSFORM_PROP_DEPTH |
A distância do PerspectiveOrigin até o plano de projeção. O valor especificado em DIPs e deve ser maior que 0. O tipo é FLOAT. O valor padrão é 1000.0f. |
PerspectiveOrigin D2D1_3DPERSPECTIVETRANSFORM_PROP_PERSPECTIVE_ORIGIN |
A localização X e Y do visualizador na cena 3D. Essa propriedade é uma D2D1_VECTOR_2F definida como: (ponto X, ponto Y). As unidades estão em DIPs. Defina o valor Z com a propriedade de Profundidade. O tipo é D2D1_VECTOR_2F. O valor padrão é {0.0f, 0.0f}. |
LocalOffset D2D1_3DPERSPECTIVETRANSFORM_PROP_LOCAL_OFFSET |
Uma tradução que o efeito executa antes de girar o plano de projeção. Essa propriedade é uma D2D1_VECTOR_3F definida como: (X, Y, Z). As unidades estão em DIPs. O tipo é D2D1_VECTOR_3F. O valor padrão é {0.0f, 0.0f, 0.0f}. |
GlobalOffset D2D1_3DPERSPECTIVETRANSFORM_PROP_GLOBAL_OFFSET |
Uma tradução que o efeito executa depois de girar o plano de projeção. Essa propriedade é uma D2D1_VECTOR_3F definida como: (X, Y, Z). As unidades estão em DIPs. O tipo é D2D1_VECTOR_3F. O valor padrão é {0.0f, 0.0f, 0.0f}. |
RotationOrigin D2D1_3DPERSPECTIVETRANSFORM_PROP_ROTATION_ORIGIN |
O ponto central da rotação que o efeito executa. Essa propriedade é uma D2D1_VECTOR_3F definida como: (X, Y, Z). As unidades estão em DIPs. O tipo é D2D1_VECTOR_3F. O valor padrão é {0.0f, 0.0f, 0.0f}. |
Rotação D2D1_3DPERSPECTIVETRANSFORM_PROP_ROTATION |
Os ângulos de rotação para cada eixo. Essa propriedade é uma D2D1_VECTOR_3F definida como: (X, Y, Z). As unidades estão em graus. O tipo é D2D1_VECTOR_3F. O valor padrão é {0.0f, 0.0f, 0.0f}. |
Modos de interpolação
Enumeração | Descrição |
---|---|
D2D1_3DPERSPECTIVETRANSFORM_INTERPOLATION_MODE_NEAREST_NEIGHBOR | Amostra o ponto único mais próximo e usa isso. Esse modo usa menos tempo de processamento, mas gera a imagem de menor qualidade. |
D2D1_3DPERSPECTIVETRANSFORM_INTERPOLATION_MODE_LINEAR | Usa um exemplo de quatro pontos e interpolação linear. Esse modo usa mais tempo de processamento do que o modo vizinho mais próximo, mas gera uma imagem de qualidade mais alta. |
D2D1_3DPERSPECTIVETRANSFORM_INTERPOLATION_MODE_CUBIC | Usa um kernel cúbico de 16 amostras para interpolação. Esse modo usa mais tempo de processamento, mas gera uma imagem de qualidade mais alta. |
D2D1_3DPERSPECTIVETRANSFORM_INTERPOLATION_MODE_MULTI_SAMPLE_LINEAR | Usa 4 exemplos lineares em um único pixel para um bom anti-aliasing de borda. Esse modo é bom para reduzir verticalmente em pequenas quantidades em imagens com poucos pixels. |
D2D1_3DPERSPECTIVETRANSFORM_INTERPOLATION_MODE_ANISOTROPIC | Usa a filtragem anisotrópica para amostrar um padrão de acordo com a forma transformada do bitmap. |
Nota
Se você não selecionar um modo, o efeito será D2D1_3DPERSPECTIVETRANSFORM_INTERPOLATION_MODE_LINEAR.
Nota
O modo anisotropic gera mipmaps ao dimensionar, no entanto, se você definir a propriedade Cache como true nos efeitos que são inseridos nesse efeito, os mipmaps não serão gerados sempre para imagens suficientemente pequenas.
Modos de borda
Nome | Descrição |
---|---|
D2D1_BORDER_MODE_SOFT | O efeito armazena a imagem com pixels pretos transparentes à medida que interpola, resultando em uma borda suave. |
D2D1_BORDER_MODE_HARD | O efeito fixa a saída ao tamanho da imagem de entrada. |
Bitmap de saída
O tamanho do bitmap de saída depende da matriz de transformação aplicada à imagem.
O efeito executa a operação de transformação e aplica uma caixa delimitadora em torno do resultado. O bitmap de saída é o tamanho da caixa delimitadora.
Requisitos
Requisito | Valor |
---|---|
Cliente mínimo com suporte | Windows 8 e Platform Update para Windows 7 [aplicativos da área de trabalho | Aplicativos da Windows Store] |
Servidor mínimo com suporte | Windows 8 e Platform Update para Windows 7 [aplicativos da área de trabalho | Aplicativos da Windows Store] |
Cabeçalho | d2d1effects.h |
Biblioteca | d2d1.lib, dxguid.lib |