Efecto de origen del mapa de bits
Use el efecto de origen del mapa de bits para generar un ID2D1Image a partir de IWICBitmapSource para usarlo como entrada en un gráfico de efectos. Este efecto realiza el escalado y la rotación en la CPU. También puede generar opcionalmente un mapa mip de memoria del sistema, que puede ser una optimización del rendimiento para escalar imágenes muy grandes activamente en varias resoluciones reducidas.
Nota:
El efecto de origen del mapa de bits toma su entrada como una propiedad, no como entrada de imagen. Debe usar el método SetValue , no el método SetInput . La propiedad WicBitmapSource es donde se especifican los datos de entrada de la imagen.
El CLSID de este efecto es CLSID_D2D1BitmapSource.
- Propiedades de efecto
- Modos de interpolación
- Orientación
- Modos alfa
- Comentarios:
- Requisitos
- Temas relacionados
Propiedades de efecto
Enumeración de índice y nombre para mostrar | Descripción |
---|---|
WicBitmapSource D2D1_BITMAPSOURCE_PROP_WIC_BITMAP_SOURCE |
IWICBitmapSource que contiene los datos de imagen que se van a cargar. El tipo es IWICBitmapSource. El valor predeterminado es NULL. |
Escala D2D1_BITMAPSOURCE_PROP_SCALE |
Cantidad de escala en la dirección X e Y. El efecto multiplica el ancho por el valor X y el alto por el valor Y. Esta propiedad es un D2D1_VECTOR_2F definido como: (escala X, escala Y). Las cantidades de escala son FLOAT, sin unidad y deben ser positivas o 0. El tipo es D2D1_VECTOR_2F. El valor predeterminado es {1.0f, 1.0f}. |
InterpolationMode. D2D1_BITMAPSOURCE_PROP_INTERPOLATION_MODE |
Modo de interpolación que se usa para escalar la imagen. Consulta Modos de interpolación para obtener más información. Si el modo deshabilita el mapa mip, BitmapSouce almacenará en caché la imagen en la resolución determinada por las propiedades Scale y EnableDPICorrection. El tipo es D2D1_BITMAPSOURCE_INTERPOLATION_MODE. El valor predeterminado es D2D1_BITMAPSOURCE_INTERPOLATION_MODE_LINEAR. |
EnableDPICorrection D2D1_BITMAPSOURCE_PROP_ENABLE_DPI_CORRECTION |
Si establece esto en TRUE, el efecto escalará la imagen de entrada para convertir el PPP notificado por IWICBitmapSource en el PPP del contexto del dispositivo. El efecto usa el modo de interpolación establecido con la propiedad InterpolationMode. Si establece esto en FALSE, el efecto usa un valor de PPP de 96.0 para la imagen de salida. El tipo es BOOL. El valor predeterminado es FALSE. |
AlphaMode D2D1_BITMAPSOURCE_PROP_ALPHA_MODE |
Modo alfa de la salida. Esto puede ser premultiplido o recto. Consulta Modos alfa para obtener más información. El tipo es D2D1_BITMAPSOURCE_ALPHA_MODE. El valor predeterminado es D2D1_BITMAPSOURCE_ALPHA_MODE_PREMULTIPLIED. |
Orientación D2D1_BITMAPSOURCE_PROP_ORIENTATION |
Operación de volteo o rotación que se va a realizar en la imagen. Consulta Orientación para obtener más información. El tipo es D2D1_BITMAPSOURCE_ORIENTATION. El valor predeterminado es D2D1_BITMAPSOURCE_ORIENTATION_DEFAULT. |
Modos de interpolación
El efecto interpola el uso de este modo cuando escala una imagen o cuando corrige el PPP. Los modos de interpolación que usa este efecto se calculan mediante la CPU, no la GPU.
Nombre | Descripción |
---|---|
D2D1_BITMAPSOURCE_INTERPOLATION_MODE_NEAREST_NEIGHBOR | Muestra el punto único más cercano y lo usa. No genera un mapa mip. |
D2D1_BITMAPSOURCE_INTERPOLATION_MODE_LINEAR | Usa una interpolación lineal y una muestra de cuatro puntos. No genera un mapa mip. |
D2D1_BITMAPSOURCE_INTERPOLATION_MODE_CUBIC | Usa un kernel cúbico de 16 muestras para la interpolación. No genera un mapa mip. |
D2D1_BITMAPSOURCE_INTERPOLATION_MODE_FANT | Usa la interpolación de ventiladores WIC, igual que la interfaz IWICBitmapScaler . No genera un mapa mip. |
D2D1_BITMAPSOURCE_INTERPOLATION_MODE_MIPMAP_LINEAR | Genera la cadena mipmap en la memoria del sistema mediante la interpolación bilineal. Para cada mapa mip, el efecto se escala al múltiplo más cercano de 0,5 mediante la interpolación bilineal y, a continuación, escala la cantidad restante mediante interpolación lineal. |
Orientación
La propiedad Orientation se puede usar para aplicar una marca de orientación EXIF insertada dentro de una imagen.
Nombre | Descripción |
---|---|
D2D1_BITMAPSOURCE_ORIENTATION_DEFAULT | Predeterminada. El efecto no cambia la orientación de la entrada. |
D2D1_BITMAPSOURCE_ORIENTATION_FLIP_HORIZONTAL | Voltea la imagen horizontalmente. |
D2D1_BITMAPSOURCE_ORIENTATION_ROTATE_CLOCKWISE180 | Gira la imagen en el sentido de las agujas del reloj 180 grados. |
D2D1_BITMAPSOURCE_ORIENTATION_ROTATE_CLOCKWISE180_FLIP_HORIZONTAL | Gira la imagen en el sentido de las agujas del reloj 180 grados y la voltea horizontalmente. |
D2D1_BITMAPSOURCE_ORIENTATION_ROTATE_CLOCKWISE270_FLIP_HORIZONTAL | Gira la imagen en el sentido de las agujas del reloj 270 grados y la voltea horizontalmente. |
D2D1_BITMAPSOURCE_ORIENTATION_ROTATE_CLOCKWISE90 | Gira la imagen en el sentido de las agujas del reloj 90 grados. |
D2D1_BITMAPSOURCE_ORIENTATION_ROTATE_CLOCKWISE90_FLIP_HORIZONTAL | Gira la imagen en el sentido de las agujas del reloj 90 grados y la voltea horizontalmente. |
D2D1_BITMAPSOURCE_ORIENTATION_ROTATE_CLOCKWISE270 | Gira la imagen en el sentido de las agujas del reloj 270 grados. |
Este fragmento de código muestra cómo convertir de valores de orientación EXIF (definidos en propkey.h) a D2D1_BITMAPSOURCE_ORIENTATION valores.
#include <propkey.h>
#include <d2d1effects.h>
D2D1_BITMAPSOURCE_ORIENTATION GetBitmapSourceOrientation(unsigned short PhotoOrientation)
{
switch (PhotoOrientation)
{
case PHOTO_ORIENTATION_NORMAL:
return D2D1_BITMAPSOURCE_ORIENTATION_DEFAULT;
case PHOTO_ORIENTATION_FLIPHORIZONTAL:
return D2D1_BITMAPSOURCE_ORIENTATION_FLIP_HORIZONTAL;
case PHOTO_ORIENTATION_ROTATE180:
return D2D1_BITMAPSOURCE_ORIENTATION_ROTATE_CLOCKWISE180;
case PHOTO_ORIENTATION_FLIPVERTICAL:
return D2D1_BITMAPSOURCE_ORIENTATION_ROTATE_CLOCKWISE180_FLIP_HORIZONTAL;
case PHOTO_ORIENTATION_TRANSPOSE:
return D2D1_BITMAPSOURCE_ORIENTATION_ROTATE_CLOCKWISE90_FLIP_HORIZONTAL;
case PHOTO_ORIENTATION_ROTATE270:
return D2D1_BITMAPSOURCE_ORIENTATION_ROTATE_CLOCKWISE90;
case PHOTO_ORIENTATION_TRANSVERSE:
return D2D1_BITMAPSOURCE_ORIENTATION_ROTATE_CLOCKWISE270_FLIP_HORIZONTAL;
case PHOTO_ORIENTATION_ROTATE90:
return D2D1_BITMAPSOURCE_ORIENTATION_ROTATE_CLOCKWISE270;
default:
return D2D1_BITMAPSOURCE_ORIENTATION_DEFAULT;
}
}
Modos alfa
Nombre | Descripción |
---|---|
D2D1_BITMAPSOURCE_ALPHA_MODE_PREMULTIPLIED | La salida del efecto usa alfa premultiplido. |
D2D1_BITMAPSOURCE_ALPHA_MODE_STRAIGHT | La salida del efecto usa alfa recto. |
Observaciones
Para optimizar el rendimiento al usar WIC y Direct2D juntos, debes usar IWICFormatConverter para convertir a un formato de píxel adecuado basado en el escenario de la aplicación y la precisión nativa de la imagen.
En la mayoría de los casos, la canalización direct2D de la aplicación solo requiere 8 bits por canal (bpc) de precisión, o la imagen solo proporciona 8 bpc precisión y, por lo tanto, debe convertir a GUID_WICPixelFormat32bppPBGRA. Sin embargo, si desea aprovechar la precisión adicional proporcionada por una imagen (por ejemplo, un JPEG-XR o TIFF almacenado con una precisión superior a 8 bpc), debe usar un formato de píxel basado en RGBA. En la tabla siguiente se proporcionan más detalles.
Precisión deseada | Precisión nativa de la imagen | Formato de píxel recomendado |
---|---|---|
8 bits por canal | <= 8 bits por canal | GUID_WICPixelFormat32bppPBGRA |
Lo más alto posible | <= 8 bits por canal | GUID_WICPixelFormat32bppPBGRA |
Lo más alto posible | > 8 bits por canal | Orden del canal RGBA, alfa premultiplicado |
Dado que muchos formatos de imagen admiten varios niveles de precisión, debe usar IWICBitmapSource::GetPixelFormat para obtener el formato de píxel nativo de la imagen y, a continuación, usar IWICPixelFormatInfo para determinar cuántos bits por canal de precisión están disponibles para ese formato. Además, tenga en cuenta que no todos los hardware admiten formatos de píxeles de alta precisión. En esos casos, es posible que la aplicación tenga que recurrir al dispositivo WARP para admitir una alta precisión.
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 |