Share via


Función DrvPlgBlt (winddi.h)

La función DrvPlgBlt proporciona funcionalidades de transferencia de bloques de bits de rotación entre combinaciones de superficies administradas por el dispositivo y administradas por GDI.

Sintaxis

BOOL DrvPlgBlt(
  [in, out]      SURFOBJ         *psoTrg,
  [in, out]      SURFOBJ         *psoSrc,
  [in, optional] SURFOBJ         *psoMsk,
  [in]           CLIPOBJ         *pco,
  [in, optional] XLATEOBJ        *pxlo,
  [in, optional] COLORADJUSTMENT *pca,
  [in, optional] POINTL          *pptlBrushOrg,
  [in]           POINTFIX        *pptfx,
  [in]           RECTL           *prcl,
  [in, optional] POINTL          *pptl,
  [in]           ULONG           iMode
);

Parámetros

[in, out] psoTrg

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 el origen de la operación de transferencia de bloques de bits.

[in, optional] psoMsk

Puntero a una estructura SURFOBJ opcional que representa una máscara para el origen. Se define mediante un mapa lógico, que es un mapa de bits con un bit por píxel.

Esta máscara limita el área del origen que se copia. Una máscara tiene un rop4 implícito de 0xCCAA, lo que significa que el origen debe copiarse dondequiera que la máscara sea una, pero el destino debe dejarse solo donde la máscara sea cero.

Si este parámetro es NULL, rop4 se 0xCCCC implícitamente, lo que significa que el origen se debe copiar en todas partes del rectángulo de origen.

La máscara siempre es lo suficientemente grande como para contener el origen pertinente; El mosaico no es necesario.

[in] pco

Puntero a una estructura CLIPOBJ que limita el área del destino que se va a modificar. Las funciones de GDI enumeran la región del clip como un conjunto de rectángulos.

Siempre que sea posible, GDI simplifica el recorte implicado. A diferencia de la función DrvBitBlt , se puede llamar a DrvPlgBlt con un único rectángulo de recorte. Esto evita errores de redondeo en el recorte de la salida.

[in, optional] pxlo

Puntero a una estructura XLATEOBJ que define cómo se traducen los índices de color entre las superficies de origen y de destino. El XLATEOBJ también se puede consultar para buscar el color RGB de cualquier índice de origen. Si pxlo es NULL, no se necesita ninguna traducción.

Se necesita una transferencia de bloques de bits de rotación de alta calidad para interpolar colores.

[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 sobre esta estructura, consulte la documentación de Microsoft Windows SDK.

[in, optional] pptlBrushOrg

Puntero a una estructura BRUSHOBJ que indica el origen del pincel de media tono. Los controladores de dispositivo que usan pinceles de medio tono deben alinear el píxel superior izquierdo del patrón del pincel con este punto en la superficie del dispositivo.

[in] pptfx

Puntero a tres estructuras POINTFIX que definen un paralelismo en la superficie de destino. Defina pptfx[0] como A, pptfx[1] como B y pptfx[2] como C. A, B y C definen tres vértices de un paralelismo. Se da un cuarto vértice implícito como:

    D = B + C − A

DrvPlgBlt nunca se llama con A, B y C collinear.

[in] prcl

Puntero a una estructura RECTL que define el área que se va a copiar, en el sistema de coordenadas de la superficie de origen. Los puntos del rectángulo de origen están bien ordenados. DrvPlgBlt nunca se le dará un rectángulo de origen vacío.

[in, optional] pptl

Puntero a una estructura POINTL que especifica qué píxel de la máscara especificada corresponde al píxel superior izquierdo del rectángulo de origen. Omita este parámetro si no se especifica ningún objeto psámk .

[in] iMode

Define cómo se combinan los píxeles de origen para obtener píxeles de salida. Este valor puede ser uno de los siguientes:

Valor Significado
BLACKONWHITE En una transferencia de bloques de bits de reducción, los píxeles deben combinarse con una operación AND. En una transferencia de bloques de bits de extensión, se deben replicar píxeles.
COLORONCOLOR En una transferencia de bloques de bits de reducción, se deben omitir suficientes píxeles para que no se necesiten 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 nivel de color o gris de la entrada.
WHITEONBLACK En una transferencia de bloques de bits de reducción, los píxeles deben combinarse con una operación OR. En una transferencia de bloques de bits de extensión, se deben replicar píxeles.
 

Los métodos WHITEONBLACK, BLACKONWHITE y COLORONCOLOR proporcionan compatibilidad con aplicaciones antiguas, pero no producen los mejores resultados para las superficies de color.

Valor devuelto

DrvPlgBlt devuelve TRUE tras el éxito. De lo contrario, notifica un error y devuelve FALSE.

Comentarios

De forma similar a DrvStretchBlt, DrvPlgBlt permite que un controlador de dispositivo escriba en mapas de bits GDI, especialmente cuando el controlador puede realizar el halftoning.

Para transformar el mapa de bits, esta función realiza transferencias de bloques de bits desde un rectángulo definido por prcl a cualquier paralelografía. El paralelismo se define mediante pptfx, que apunta a una matriz de tres puntos.

El rectángulo de origen en prcl se considera un rectángulo geométrico cuyas esquinas se desplazan por (-0,5,-0,5) de las coordenadas enteras dadas. Esto coincide exactamente con el rectángulo de origen de DrvStretchBlt. El rectángulo de origen siempre está bien ordenado.

La esquina superior izquierda del rectángulo de origen se asigna al primer punto, A. La esquina superior derecha del rectángulo de origen se asigna al segundo punto, B. La esquina inferior izquierda del rectángulo de origen se asigna al tercer punto, C. La esquina inferior derecha del rectángulo de origen se asigna al punto implícito en el paralelismo definido tratando los tres puntos dados como vectores y computación:

    D = B + C - A

Tenga en cuenta que una bilt elástica se puede expresar exactamente como un blt de paralelismo, pero las coordenadas proporcionadas para el destino tendrán una parte fraccionaria de 0,5.

DrvPlgBlt es opcional para los controladores de gráficos. Solo se proporciona para determinados tipos de rotación. El controlador debe llamar a EngPlgBlt si se llama a DrvPlgBlt para realizar operaciones que no admite.

Requisitos

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

Consulte también

DrvAlphaBlend

DrvBitBlt

DrvStretchBlt

DrvStretchBltROP

DrvTransparentBlt

EngAlphaBlend

EngBitBlt

EngPlgBlt

EngStretchBlt

EngStretchBltROP

EngTransparentBlt