Efecto de transformación 3D
Use el efecto de transformación 3D para aplicar una matriz de transformación 4x4 arbitraria a una imagen.
Este efecto aplica la matriz (M?) que se proporciona a los vértices de esquina de la imagen de origen ([ x y z 1 ]) mediante este cálculo:
[ xr yr zr 1 ]=[ x y z 1 ]*M?
El CLSID de este efecto es CLSID_D2D13DTransform.
- Imagen de ejemplo
- Propiedades de efecto
- Clase de matriz de transformación 4x4
- Requisitos
- Temas relacionados
Imagen de ejemplo
Antes |
---|
Después |
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();
Propiedades de efecto
Enumeración de nombre para mostrar e índice | Descripción |
---|---|
InterpolationMode D2D1_3DTRANSFORM_PROP_INTERPOLATION_MODE |
Modo de interpolación que usa el efecto en la imagen. Hay 5 modos de escala que varían en calidad y velocidad. El tipo es D2D1_3DTRANSFORM_INTERPOLATION_MODE. El valor predeterminado es D2D1_3DTRANSFORM_INTERPOLATION_MODE_LINEAR. |
BorderMode D2D1_3DTRANSFORM_PROP_BORDER_MODE |
Modo utilizado para calcular el borde de la imagen, suave o dura. Consulta Modos de borde para obtener más información. El tipo es D2D1_BORDER_MODE. El valor predeterminado es D2D1_BORDER_MODE_SOFT. |
TransformMatrix D2D1_3DTRANSFORM_PROP_TRANSFORM_MATRIX |
Matriz de transformación 4x4 aplicada al plano de proyección. El siguiente cálculo de matriz se usa para asignar puntos de un sistema de coordenadas 3D al sistema de coordenadas 2D transformado. Dónde:
Mx,y = Transformar elementos Matrix Coordenadas del plano de proyección X , Y , Z =Salidas Los elementos de matriz individuales no están limitados y no tienen unidad. El tipo es D2D1_MATRIX_4X4_F. El valor predeterminado es Matrix4x4F(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1). |
Modos de interpolación
Enumeración | Descripción |
---|---|
D2D1_3DTRANSFORM_INTERPOLATION_MODE_NEAREST_NEIGHBOR | Muestra el punto único más cercano y lo usa. Este modo usa menos tiempo de procesamiento, pero genera la imagen de menor calidad. |
D2D1_3DTRANSFORM_INTERPOLATION_MODE_LINEAR | Usa un ejemplo de cuatro puntos y una interpolación lineal. Este modo usa más tiempo de procesamiento que el modo vecino más cercano, pero genera una imagen de mayor calidad. |
D2D1_3DTRANSFORM_INTERPOLATION_MODE_CUBIC | Usa un kernel cúbico de 16 muestras para la interpolación. Este modo usa el mayor tiempo de procesamiento, pero genera una imagen de mayor calidad. |
D2D1_3DTRANSFORM_INTERPOLATION_MODE_MULTI_SAMPLE_LINEAR | Usa 4 muestras lineales dentro de un solo píxel para un buen suavizado de contorno perimetral. Este modo es bueno para reducir verticalmente por pequeñas cantidades en imágenes con pocos píxeles. |
D2D1_3DTRANSFORM_INTERPOLATION_MODE_ANISOTROPIC | Usa el filtrado anisotrópico para muestrear un patrón según la forma transformada del mapa de bits. |
Nota
Si no selecciona un modo, el efecto tiene como valor predeterminado D2D1_3DTRANSFORM_INTERPOLATION_MODE_LINEAR.
Nota
El modo Anisotrópico genera mapas MIP al escalar, sin embargo, si establece la propiedad Cached en true en los efectos que se introducen en este efecto, los mapas MIP no se generarán cada vez para imágenes suficientemente pequeñas.
Modos de borde
Nombre | Descripción |
---|---|
D2D1_BORDER_MODE_SOFT | El efecto rellena la imagen con píxeles negros transparentes a medida que interpola, lo que da como resultado un borde suave. |
D2D1_BORDER_MODE_HARD | El efecto sujeta la salida al tamaño de la imagen de entrada. |
Clase de matriz de transformación 4x4
Direct2D proporciona una clase de matriz 4x4 para proporcionar funciones auxiliares para transformar la imagen en 3 dimensiones. Consulta el tema Matrix4x4F para obtener más información y una descripción de todos los miembros de la clase.
Función | Descripción | Matriz |
---|---|---|
Matrix4x4F::Scale(X, Y, Z) | Genera una matriz de transformación que escala el plano de proyección en la dirección X, Y o Z. | |
SkewX(X) | Genera una matriz de transformación que sesga el plano de proyección en la dirección X. | |
SkewY(Y) | Genera una matriz de transformación que sesga el plano de proyección en la dirección Y. | |
Translation(X, Y, Z) | Genera una matriz de transformación que traduce el plano de proyección en la dirección X, Y o Z. | |
RotationX(X) | Genera una matriz de transformación que gira el plano de proyección sobre el eje X. | |
RotationY(Y) | Genera una matriz de transformación que gira el plano de proyección sobre el eje Y. | |
RotationZ(Z) | Genera una matriz de transformación que gira el plano de proyección sobre el eje Z. | |
PerspectiveProjection(D) | Transformación de perspectiva con un valor de profundidad de D. | |
RotationArbitraryAxis(X, Y, Z, degrees) | Gira el plano de proyección sobre el eje que especifique. |
Requisitos
Requisito | Value |
---|---|
Cliente mínimo compatible | Windows 8 y actualización de plataforma para Windows 7 [aplicaciones de escritorio | Aplicaciones de la Tienda Windows] |
Servidor mínimo compatible | Windows 8 y actualización de plataforma para Windows 7 [aplicaciones de escritorio | Aplicaciones de la Tienda Windows] |
Encabezado | d2d1effects.h |
Biblioteca | d2d1.lib, dxguid.lib |