Efeito de transformação 3D
Use o efeito de transformação 3D para aplicar uma matriz de transformação 4x4 arbitrária a uma imagem.
Esse efeito aplica a matriz (M?) que você fornece aos vértices de canto da imagem de origem ([ x y z 1 ]) usando este cálculo:
[ xr yr zr 1 ]=[ x y z 1 ]*M?
O CLSID para esse efeito é CLSID_D2D13DTransform.
- de imagem de exemplo
- propriedades do efeito
- modos de interpolação
- modos de borda
- classe de matriz de transformação 4x4
- requisitos de
- tópicos relacionados
Imagem de exemplo
Antes |
---|
![]() |
Depois |
![]() |
ComPtr<ID2D1Effect> D2D13DTransformEffect;
m_d2dContext->CreateEffect(CLSID_D2D13DTransform, &D2D13DTransformEffect);
D2D13DTransformEffect->SetInput(0, bitmap);
// You can use the helper methods in D2D1::Matrix4x4F to create common matrix transformations.
D2D1_MATRIX_4X4_F matrix =
D2D1::Matrix4x4F::Translation(0.0f, -192.0f, 0.0f) *
D2D1::Matrix4x4F::RotationY(30.0f) *
D2D1::Matrix4x4F::Translation(0.0f, 192.0f, 0.0f);
D2D13DTransformEffect->SetValue(D2D1_3DTRANSFORM_PROP_TRANSFORM_MATRIX, matrix);
m_d2dContext->BeginDraw();
m_d2dContext->DrawImage(D2D13DTransformEffect.Get());
m_d2dContext->EndDraw();
Propriedades de efeito
Nome de exibição e enumeração de índice | Descrição |
---|---|
InterpolationMode D2D1_3DTRANSFORM_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_3DTRANSFORM_INTERPOLATION_MODE. O valor padrão é D2D1_3DTRANSFORM_INTERPOLATION_MODE_LINEAR. |
BorderMode D2D1_3DTRANSFORM_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. |
TransformMatrix D2D1_3DTRANSFORM_PROP_TRANSFORM_MATRIX |
Uma matriz de transformação 4x4 aplicada ao plano de projeção. O cálculo de matriz a seguir é usado para mapear pontos de um sistema de coordenadas 3D para o sistema de coordenadas 2D transformado. ![]()
Mx,y = Elementos de Matriz de Transformação Coordenadas do plano de projeção X, Y, Z =Saída Os elementos de matriz individuais não são limitados e não têm unidade. O tipo é D2D1_MATRIX_4X4_F. O valor padrão é Matrix4x4F(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 1). |
Modos de interpolação
Enumeração | Descrição |
---|---|
D2D1_3DTRANSFORM_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_3DTRANSFORM_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_3DTRANSFORM_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_3DTRANSFORM_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_3DTRANSFORM_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_3DTRANSFORM_INTERPOLATION_MODE_LINEAR padrão.
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. |
Classe de matriz de transformação 4x4
O Direct2D fornece uma classe de matriz 4x4 para fornecer funções auxiliares para transformar a imagem em três dimensões. Consulte o tópicoMatrix4x4F para obter mais informações e uma descrição de todos os membros da classe.
Função | Descrição | Matriz |
---|---|---|
Matrix4x4F::Scale(X, Y, Z) | Gera uma matriz de transformação que dimensiona o plano de projeção na direção X, Y e/ou Z. |
![]() |
SkewX(X) | Gera uma matriz de transformação que distorce o plano de projeção na direção X. |
![]() |
SkewY(Y) | Gera uma matriz de transformação que distorce o plano de projeção na direção Y. |
![]() |
Translation(X, Y, Z) | Gera uma matriz de transformação que converte o plano de projeção na direção X, Y ou Z. |
![]() |
RotationX(X) | Gera uma matriz de transformação que gira o plano de projeção sobre o eixo X. |
![]() |
RotationY(Y) | Gera uma matriz de transformação que gira o plano de projeção sobre o eixo Y. |
![]() |
RotationZ(Z) | Gera uma matriz de transformação que gira o plano de projeção sobre o eixo Z. |
![]() |
PerspectiveProjection(D) | Uma transformação de perspectiva com um valor de profundidade de D. |
![]() |
RotationArbitraryAxis(X, Y, Z, degrees) | Gira o plano de projeção sobre o eixo especificado. |
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 |