Efecto de transformación de perspectiva 3D
Use el efecto de transformación de perspectiva 3D para girar la imagen en 3 dimensiones como si se viera desde una distancia.
La transformación de perspectiva 3D es más conveniente que el efecto de transformación 3D, pero solo expone un subconjunto de la funcionalidad. Puede calcular una matriz de transformación 3D completa y aplicar una matriz de transformación más arbitraria a una imagen mediante la transformación 3D efecto.
El CLSID de este efecto es CLSID_D2D13DPerspectiveTransform.
- imagen de ejemplo
- propiedades Effect
- modos de interpolación
- modos de borde
- de mapa de bits de salida
- requisitos de
- temas relacionados
Imagen de ejemplo
Antes |
---|
![]() |
Después |
![]() |
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();
Propiedades de efecto
Enumeración de índice y nombre para mostrar | Descripción |
---|---|
InterpolationMode D2D1_3DPERSPECTIVETRANSFORM_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_3DPERSPECTIVETRANSFORM_INTERPOLATION_MODE. El valor predeterminado es D2D1_3DPERSPECTIVETRANSFORM_INTERPOLATION_MODE_LINEAR. |
BorderMode D2D1_3DPERSPECTIVETRANSFORM_PROP_BORDER_MODE |
Modo que se usa 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. |
Profundidad D2D1_3DPERSPECTIVETRANSFORM_PROP_DEPTH |
Distancia desde el PerspectiveOrigin al plano de proyección. El valor especificado en DIP y debe ser mayor que 0. El tipo es FLOAT. El valor predeterminado es 1000.0f. |
PerspectiveOrigin D2D1_3DPERSPECTIVETRANSFORM_PROP_PERSPECTIVE_ORIGIN |
Ubicación X e Y del visor en la escena 3D. Esta propiedad es un D2D1_VECTOR_2F definido como: (punto X, punto Y). Las unidades están en DIP. Establezca el valor Z con la propiedad profundidad de. El tipo es D2D1_VECTOR_2F. El valor predeterminado es {0.0f, 0.0f}. |
LocalOffset D2D1_3DPERSPECTIVETRANSFORM_PROP_LOCAL_OFFSET |
Una traducción que realiza el efecto antes de girar el plano de proyección. Esta propiedad es un D2D1_VECTOR_3F definido como: (X, Y, Z). Las unidades están en DIP. El tipo es D2D1_VECTOR_3F. El valor predeterminado es {0.0f, 0.0f, 0.0f}. |
GlobalOffset D2D1_3DPERSPECTIVETRANSFORM_PROP_GLOBAL_OFFSET |
Una traducción que realiza el efecto después de girar el plano de proyección. Esta propiedad es un D2D1_VECTOR_3F definido como: (X, Y, Z). Las unidades están en DIP. El tipo es D2D1_VECTOR_3F. El valor predeterminado es {0.0f, 0.0f, 0.0f}. |
RotationOrigin D2D1_3DPERSPECTIVETRANSFORM_PROP_ROTATION_ORIGIN |
El punto central del giro que realiza el efecto. Esta propiedad es un D2D1_VECTOR_3F definido como: (X, Y, Z). Las unidades están en DIP. El tipo es D2D1_VECTOR_3F. El valor predeterminado es {0.0f, 0.0f, 0.0f}. |
Rotación D2D1_3DPERSPECTIVETRANSFORM_PROP_ROTATION |
Ángulos de rotación para cada eje. Esta propiedad es un D2D1_VECTOR_3F definido como: (X, Y, Z). Las unidades están en grados. El tipo es D2D1_VECTOR_3F. El valor predeterminado es {0.0f, 0.0f, 0.0f}. |
Modos de interpolación
Enumeración | Descripción |
---|---|
D2D1_3DPERSPECTIVETRANSFORM_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_3DPERSPECTIVETRANSFORM_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_3DPERSPECTIVETRANSFORM_INTERPOLATION_MODE_CUBIC | Usa un kernel cúbico de 16 muestras para la interpolación. Este modo usa el tiempo de procesamiento más alto, pero genera una imagen de mayor calidad. |
D2D1_3DPERSPECTIVETRANSFORM_INTERPOLATION_MODE_MULTI_SAMPLE_LINEAR | Usa 4 muestras lineales dentro de un solo píxel para un buen suavizado de contornos. Este modo es bueno para reducir verticalmente por pequeñas cantidades en imágenes con pocos píxeles. |
D2D1_3DPERSPECTIVETRANSFORM_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_3DPERSPECTIVETRANSFORM_INTERPOLATION_MODE_LINEAR.
Nota
Sin embargo, el modo anisotrópico genera mapas mip al escalar, 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 lugar a un borde suave. |
D2D1_BORDER_MODE_HARD | El efecto fija la salida al tamaño de la imagen de entrada. |
Mapa de bits de salida
El tamaño del mapa de bits de salida depende de la matriz de transformación que se aplica a la imagen.
El efecto realiza la operación de transformación y, a continuación, aplica un cuadro de límite alrededor del resultado. El mapa de bits de salida es el tamaño del cuadro de límite.
Requisitos
Requisito | Valor |
---|---|
Cliente mínimo admitido | Windows 8 y Platform Update para Windows 7 [aplicaciones de escritorio | Aplicaciones de la Tienda Windows] |
Servidor mínimo admitido | Windows 8 y Platform Update para Windows 7 [aplicaciones de escritorio | Aplicaciones de la Tienda Windows] |
Encabezado | d2d1effects.h |
Biblioteca | d2d1.lib, dxguid.lib |