Funzione DrvPlgBlt (winddi.h)

La funzione DrvPlgBlt offre funzionalità di trasferimento a blocchi bit ruotati tra combinazioni di superfici gestite dal dispositivo e gestite da GDI.

Sintassi

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
);

Parametri

[in, out] psoTrg

Puntatore a una struttura SURFOBJ che descrive la superficie su cui disegnare.

[in, out] psoSrc

Puntatore a una struttura SURFOBJ che descrive l'origine per l'operazione di trasferimento a blocchi bit.

[in, optional] psoMsk

Puntatore a una struttura SURFOBJ facoltativa che rappresenta una maschera per l'origine. Viene definito da una mappa per la logica, ovvero una bitmap con un bit per pixel.

Questa maschera limita l'area dell'origine copiata. Una maschera ha un rop4 implicito di 0xCCAA, che significa che l'origine deve essere copiata ovunque la maschera sia una, ma la destinazione deve essere lasciata sola ovunque la maschera sia zero.

Se questo parametro è NULL, rop4 è implicitamente 0xCCCC, il che significa che l'origine deve essere copiata ovunque nel rettangolo di origine.

La maschera è sempre abbastanza grande per contenere l'origine pertinente; la tiling non è necessaria.

[in] pco

Puntatore a una struttura CLIPOBJ che limita l'area della destinazione da modificare. Le funzioni GDI enumera l'area clip come set di rettangoli.

Se possibile, GDI semplifica il ritaglio coinvolto. A differenza della funzione DrvBitBlt, DrvPlgBlt può essere chiamato con un singolo rettangolo di ritaglio. Ciò impedisce l'arrotondamento degli errori nel ritaglio dell'output.

[in, optional] pxlo

Puntatore a una struttura XLATEOBJ che definisce il modo in cui gli indici di colore vengono convertiti tra le superfici di origine e di destinazione. È anche possibile eseguire query su XLATEOBJ per trovare il colore RGB per qualsiasi indice di origine. Se pxlo è NULL, non è necessaria alcuna traduzione.

È necessario un trasferimento a blocchi bit di alta qualità per interpolare i colori.

[in, optional] pca

Puntatore a una struttura COLORADJUSTMENT che definisce i valori di regolazione dei colori da applicare alla bitmap di origine prima di estendere i bit. Per altre informazioni su questa struttura, vedere la documentazione di Microsoft Windows SDK.

[in, optional] pptlBrushOrg

Puntatore a una struttura BRUSHOBJ che indica l'origine del pennello halftone. I driver di dispositivo che usano pennelli halftone devono allineare il pixel superiore sinistro del modello del pennello con questo punto sulla superficie del dispositivo.

[in] pptfx

Puntatore a tre strutture POINTFIX che definiscono un parallelogramma nella superficie di destinazione. Definire pptfx[0] come A, pptfx[1] come B e pptfx[2] come C. A, B e C definiscono tre vertici di un parallelogramma. Un quarto vertice implicito viene assegnato come:

    D = B + C − A

DrvPlgBlt non viene mai chiamato con A, B e C collinear.

[in] prcl

Puntatore a una struttura RECTL che definisce l'area da copiare nel sistema di coordinate della superficie di origine. I punti del rettangolo di origine sono ben ordinati. DrvPlgBlt non verrà mai assegnato un rettangolo di origine vuoto.

[in, optional] pptl

Puntatore a una struttura POINTL che specifica quale pixel nella maschera specificata corrisponde al pixel in alto a sinistra nel rettangolo di origine. Ignorare questo parametro se non viene specificato alcun psoMsk .

[in] iMode

Definisce il modo in cui i pixel di origine vengono combinati per ottenere pixel di output. I valori validi sono i seguenti:

Valore Significato
BLACKONWHITE In un trasferimento a blocchi bit compattati, i pixel devono essere combinati con un'operazione AND. In un trasferimento a blocchi bit di estensione, i pixel devono essere replicati.
COLORONCOLOR In un trasferimento a blocchi di bit compattabile, è necessario ignorare un numero sufficiente di pixel in modo che i pixel non siano combinati. In un trasferimento a blocchi bit di estensione, i pixel devono essere replicati.
SEMITONO Il driver può usare gruppi di pixel nell'area di output per approssimare al meglio il colore o il livello grigio dell'input.
WHITEONBLACK In un trasferimento a blocchi bit compattati, i pixel devono essere combinati con un'operazione OR. In un trasferimento a blocchi bit di estensione, i pixel devono essere replicati.
 

I metodi WHITEONBLACK, BLACKONWHITE e COLORONCOLOR forniscono la compatibilità per le applicazioni precedenti, ma non producono i risultati migliori per le superfici di colore.

Valore restituito

DrvPlgBlt restituisce TRUE al successo. In caso contrario, segnala un errore e restituisce FALSE.

Commenti

Analogamente a DrvStretchBlt, DrvPlgBlt consente a un driver di dispositivo di scrivere in bitmap GDI, soprattutto quando il driver può eseguire la metà.

Per trasformare la bitmap, questa funzione esegue trasferimenti a bit-block da un rettangolo definito da prcl a qualsiasi parallelogramma. Il parallelogramma è definito da pptfx, che punta a una matrice di tre punti.

Il rettangolo di origine in prcl è considerato un rettangolo geometrico con angoli spostati da (-0,5,-0,5) dalle coordinate integer indicate. Corrisponde esattamente al rettangolo di origine per DrvStretchBlt. Il rettangolo di origine è sempre ben ordinato.

L'angolo superiore sinistro del rettangolo di origine viene mappato al primo punto, A. L'angolo superiore destro del rettangolo di origine viene mappato al secondo punto, B. L'angolo inferiore sinistro del rettangolo di origine viene mappato al terzo punto, C. L'angolo inferiore destro del rettangolo di origine viene mappato al punto implicito nel parallelogramma definito trattando i tre punti specificati come vettori e calcolo:

    D = B + C - A

Si noti che un'estensione blt può essere espressa esattamente come parallelogramma blt, ma le coordinate indicate per la destinazione avranno una parte frazionaria di 0,5.

DrvPlgBlt è facoltativo per i driver grafici. Viene fornito solo per determinati tipi di rotazione. Il driver deve chiamare EngPlgBlt se DrvPlgBlt viene chiamato per eseguire operazioni che non supporta.

Requisiti

   
Piattaforma di destinazione Desktop
Intestazione winddi.h (include Winddi.h)

Vedi anche

DrvAlphaBlend

DrvBitBlt

DrvStretchBlt

DrvStretchBltROP

DrvTransparentBlt

EngAlphaBlend

EngBitBlt

EngPlgBlt

EngStretchBlt

EngStretchBltROP

EngTransparentBlt