Share via


Función DrvStretchBltROP (winddi.h)

La función DrvStretchBltROP realiza una transferencia de bloques de bits de extensión mediante un ROP.

Sintaxis

BOOL DrvStretchBltROP(
  [in, out]      SURFOBJ         *psoDest,
  [in, out]      SURFOBJ         *psoSrc,
  [in, optional] SURFOBJ         *psoMask,
  [in]           CLIPOBJ         *pco,
  [in, optional] XLATEOBJ        *pxlo,
  [in, optional] COLORADJUSTMENT *pca,
  [in]           POINTL          *pptlHTOrg,
  [in]           RECTL           *prclDest,
  [in]           RECTL           *prclSrc,
  [in, optional] POINTL          *pptlMask,
  [in]           ULONG           iMode,
  [in]           BRUSHOBJ        *pbo,
  [in]           DWORD           rop4
);

Parámetros

[in, out] psoDest

Puntero a una estructura SURFOBJ que describe la superficie en la que se va a dibujar.

[in, out] psoSrc

Puntero a una estructura SURFOBJ que describe la superficie de origen para la transferencia de bloques de bits.

[in, optional] psoMask

Puntero a una estructura SURFOBJ que define una máscara para el origen. La máscara se define mediante un mapa lógico, que es un mapa de bits con un bit por píxel. Normalmente, una máscara limita el área que se va a modificar en la superficie de destino. Esta máscara siempre tiene el mismo tamaño que la superficie de origen.

[in] pco

Puntero a una estructura CLIPOBJ que limita el área que se va a modificar en el destino. Las rutinas de servicio CLIPOBJ_Xxx se proporcionan para enumerar la región del clip como un conjunto de rectángulos.

Siempre que sea posible, GDI simplifica el recorte implicado. Sin embargo, a diferencia de DrvBitBlt, se puede llamar a DrvStretchBltROP con un solo rectángulo de recorte. Esto evita errores de redondeo en el recorte de la salida.

[in, optional] pxlo

Puntero a una estructura XLATEOBJ que especifica cómo se traducirán los índices de color entre las superficies de origen y de destino. Si pxlo es NULL, no se necesita ninguna traducción.

Esta estructura XLATEOBJ también se puede consultar para buscar el color RGB de cualquier índice de origen. Una transferencia de bloques de bits de alta calidad deberá interpolar colores en algunos casos.

[in, optional] pca

Puntero a una estructura COLORADJUSTMENT que define los valores de ajuste de color que se aplicarán al mapa de bits de origen antes de estirar los bits. Para obtener más información, consulte la documentación de Microsoft Windows SDK.

[in] pptlHTOrg

Puntero a una estructura POINTL que define el origen del pincel de medio tono en la superficie de destino. Al usar pinceles de medio tono, el controlador debe alinear el píxel superior izquierdo del pincel con este punto y repetir el pincel según sus dimensiones. El controlador debe omitir este parámetro si el parámetro rop4 no requiere un patrón.

[in] prclDest

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. Los dos puntos que definen el rectángulo no siempre están bien ordenados, lo que significa que las coordenadas del segundo punto no son necesariamente mayores que las del primer punto. El controlador debe intercambiar los dos valores x o los dos valores y si el rectángulo de destino no está bien ordenado.

El rectángulo es exclusivo de la parte inferior derecha; es decir, los bordes inferior y derecho no forman parte de la copia.

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

[in] prclSrc

Puntero a una estructura RECTL que define el área 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 es exclusivo de la parte inferior derecha; es decir, sus bordes inferior y derecho no forman parte de la copia.

El controlador debe asignar este rectángulo al rectángulo definido por prclDest.

[in, optional] pptlMask

Puntero a una estructura POINTL que define un píxel en la máscara a la que apunta prclMask . Este píxel corresponde al píxel superior izquierdo del rectángulo de origen al que apunta prclSrc . El controlador debe omitir este parámetro si no se especifica ninguna máscara.

[in] iMode

Especifica cómo se combinan los píxeles de origen para obtener píxeles de salida. El modo HALFTONE es más lento que los demás modos, pero genera imágenes de mayor calidad. Este parámetro puede ser uno de los valores siguientes:

Valor Significado
BLACKONWHITE En una transferencia de bloque de bits de reducción, los píxeles deben combinarse con una operación AND booleana. En una transferencia de bloques de bits de extensión, se deben replicar píxeles.
COLORONCOLOR En una transferencia de bloque de bits de reducción, se deben omitir suficientes píxeles, por lo que no es necesario combinar píxeles. En una transferencia de bloques de bits de extensión, se deben replicar píxeles.
SEMITONOS El controlador puede usar grupos de píxeles en la superficie de salida para aproximar mejor el color o el nivel de gris de la entrada.
WHITEONBLACK En una transferencia de bloque de bits de reducción, los píxeles deben combinarse con una operación OR booleana. En una transferencia de bloques de bits de extensión, se deben replicar píxeles.

[in] pbo

Puntero a la estructura BRUSHOBJ que se va a usar para definir el patrón para la transferencia de bloques de bits. La rutina de servicio de BRUSHOBJ_pvGetRbrush de GDI recupera la realización del pincel del dispositivo. El controlador puede omitir este parámetro si el parámetro rop4 no requiere un patrón.

[in] rop4

Representa una operación de trama que define cómo se combinan los píxeles de máscara, patrón, origen y destino para escribir un píxel de salida en la superficie de destino.

Se trata de una operación ráster cuaternaria, que es una extensión natural de la operación ternaria habitual Rop3. Un Rop4 tiene 16 bits relevantes, que son similares a los 8 bits que definen un Rop3. (Se omiten los demás bits redundantes de Rop3). La manera más sencilla de implementar un Rop4 es tener en cuenta sus 2 bytes por separado. El byte inferior especifica un Rop3 que se debe calcular dondequiera que la máscara a la que apunte la máscara es 1. El byte alto especifica un Rop3 que se puede calcular y aplicar dondequiera que la máscara sea cero.

Valor devuelto

DrvStretchBltROP debe devolver TRUE tras el éxito. De lo contrario, debe notificar un código de error y devolver FALSE.

Comentarios

La asignación se define mediante prclSrc y prclDest. Los puntos especificados en prclDest y prclSrc se encuentran en coordenadas enteras, que corresponden a los centros de píxeles. Un rectángulo definido por dos puntos de este tipo se considera un rectángulo geométrico con dos vértices cuyas coordenadas son los puntos dados, pero con 0,5 restado de cada coordenada. (Las estructuras POINTL son notación abreviada para especificar estos vértices de coordenada fraccionaria).

Opcionalmente, el controlador puede implementar DrvStretchBltROP. Si el controlador enlaza esta llamada, puede llamar a EngStretchBltROP para realizar las operaciones de extensión de blit que no admite.

Requisitos

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

Consulte también

DrvAlphaBlend

DrvBitBlt

DrvPlgBlt

DrvStretchBlt

DrvTransparentBlt

EngAlphaBlend

EngBitBlt

EngPlgBlt

EngStretchBlt

EngStretchBltROP

EngTransparentBlt