Compartir a través de


Función DrvTransparentBlt (winddi.h)

La función DrvTransparentBlt proporciona funcionalidades de transferencia de bloques de bits con transparencia.

Sintaxis

BOOL DrvTransparentBlt(
  [in, out]      SURFOBJ  *psoDst,
  [in]           SURFOBJ  *psoSrc,
  [in]           CLIPOBJ  *pco,
  [in, optional] XLATEOBJ *pxlo,
  [in]           RECTL    *prclDst,
  [in]           RECTL    *prclSrc,
  [in]           ULONG    iTransColor,
  [in]           ULONG    ulReserved
);

Parámetros

[in, out] psoDst

Puntero a la estructura SURFOBJ que identifica la superficie de destino en la que se va a dibujar.

[in] psoSrc

Puntero a la estructura SURFOBJ que identifica la superficie de origen de la transferencia de bloques de bits.

[in] pco

Puntero a una estructura CLIPOBJ . Las rutinas de servicio CLIPOBJ_Xxx se proporcionan para enumerar la región del clip como un conjunto de rectángulos. Esta enumeración limita el área del destino que se modifica. Siempre que sea posible, GDI simplifica el recorte implicado.

[in, optional] pxlo

Puntero a una estructura XLATEOBJ que indica cómo se deben traducir los índices de color de origen para escribir en la superficie de destino. Si pxlo es NULL, no se necesita ninguna traducción.

[in] prclDst

Puntero a una estructura RECTL que define el área rectangular que se va a modificar. Este rectángulo se especifica en el sistema de coordenadas de la superficie de destino y se define mediante dos puntos: superior izquierda e inferior derecha. El rectángulo es exclusivo de la parte inferior derecha; es decir, sus bordes inferior y derecho no forman parte de la transferencia de bloques de bits. Los dos puntos que definen el rectángulo siempre están bien ordenados.

Nunca se llama a DrvTransparentBlt con un rectángulo de destino vacío.

[in] prclSrc

Puntero a una estructura RECTL que define el área rectangular que se va a copiar. Este rectángulo se especifica en el sistema de coordenadas de la superficie de origen y se define mediante dos puntos: superior izquierdo e inferior derecho. Los dos puntos que definen el rectángulo siempre están bien ordenados.

El rectángulo de origen nunca superará los límites de la superficie de origen, por lo que nunca volvía la superficie de origen.

Este rectángulo se asigna al rectángulo de destino definido por prclDst. Nunca se llama a DrvTransparentBlt con un rectángulo de origen vacío.

[in] iTransColor

Especifica el color físico transparente en el formato de superficie de origen. En el caso de los dispositivos con paletas, este valor es un índice de paleta. En el caso de los dispositivos sin paletas, este valor es un color RGB en el formato que se usa en la superficie de origen. Por ejemplo, si el formato de superficie de origen está en formato RGB 5:6:5, el valor de este parámetro también tendrá el mismo formato.

[in] ulReserved

Reservados; este parámetro debe establecerse en cero.

Valor devuelto

DrvTransparentBlt devuelve TRUE tras el éxito. De lo contrario, devuelve FALSE.

Comentarios

Opcionalmente, puede implementar la función DrvTransparentBlt en controladores de gráficos.

La transferencia de bloques de bits con transparencia se admite entre dos superficies administradas por el dispositivo o entre una superficie administrada por el dispositivo y un mapa de bits de formato estándar administrado por GDI. Se recomienda a los escritores de controladores que admitan el caso de desengramiento de mapas de bits del dispositivo fuera de pantalla en memoria de vídeo a otras superficies en memoria de vídeo; todos los demás casos se pueden puntuar en EngTransparentBlt con poca penalización de rendimiento. El controlador puede punt las llamadas que implican superficies administradas por el dispositivo a EngTransparentBlt.

Los píxeles de la superficie de origen que coincidan con el color transparente especificado por iTransColor no se copian. Para obtener una explicación detallada de los blts transparentes, consulte Copia de mapas de bits.

Nunca se llamará al controlador con rectángulos de origen y destino superpuestos en la misma superficie.

El controlador debe omitir los bits sin usar en la comparación de teclas de color, como para el bit más significativo cuando el formato de mapa de bits es 5:5:5 (cinco bits cada uno de rojo, verde y azul).

El controlador enlaza DrvTransparentBlt estableciendo la marca HOOK_TRANSPARENTBLT cuando llama a EngAssociateSurface. Si el controlador ha enganchado DrvTransparentBlt y se llama a para realizar una operación que no admite, el controlador debe tener GDI controlando la operación reenviando los datos en una llamada a EngTransparentBlt.

Requisitos

Requisito Value
Plataforma de destino Escritorio
Encabezado winddi.h (incluya Winddi.h)

Consulte también

DrvBitBlt

DrvPlgBlt

DrvStretchBlt

DrvStretchBltROP

EngAssociateSurface

EngBitBlt

EngPlgBlt

EngStretchBlt

EngStretchBltROP

EngTransparentBlt