Efecto de transformación de perspectiva 3D
Utilice 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 cómoda 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 el efecto de transformación 3D .
El CLSID de este efecto es CLSID_D2D13DPerspectiveTransform.
- Imagen de ejemplo
- Propiedades de efecto
- Modos de interpolación
- Modos de borde
- Mapa de bits de salida
- Requisitos
- 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 nombre para mostrar e índice | 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 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. |
Profundidad D2D1_3DPERSPECTIVETRANSFORM_PROP_DEPTH |
Distancia desde PerspectiveOrigin hasta el 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 |
La 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 Depth . 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 |
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 mayor tiempo de procesamiento, 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 contorno perimetral. 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
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. |
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 rectángulo delimitador alrededor del resultado. El mapa de bits de salida es el tamaño del cuadro de límite.
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 |