Condividi tramite


Funzione DrvStretchBltROP (winddi.h)

La funzione DrvStretchBltROP esegue un trasferimento a blocchi bit esteso usando un ROP.

Sintassi

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

Parametri

[in, out] psoDest

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

[in, out] psoSrc

Puntatore a una struttura SURFOBJ che descrive la superficie di origine per il trasferimento a blocchi di bit.

[in, optional] psoMask

Puntatore a una struttura SURFOBJ che definisce una maschera per l'origine. La maschera è definita da una mappa per la logica, ovvero una bitmap con un bit per pixel. In genere, una maschera limita l'area da modificare nell'area di destinazione. Questa maschera è sempre la stessa dimensione della superficie di origine.

[in] pco

Puntatore a una struttura CLIPOBJ che limita l'area da modificare nella destinazione. Le routine di servizio CLIPOBJ_Xxx vengono fornite per enumerare l'area clip come set di rettangoli.

Se possibile, GDI semplifica il ritaglio coinvolto. Tuttavia, a differenza di DrvBitBlt, DrvStretchBltROP 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 specifica il modo in cui gli indici di colore devono essere convertiti tra le superfici di origine e di destinazione. Se pxlo è NULL, non è necessaria alcuna traduzione.

Questa struttura XLATEOBJ può anche essere eseguita una query per trovare il colore RGB per qualsiasi indice di origine. Un trasferimento a blocchi bit di alta qualità dovrà interpolare i colori in alcuni casi.

[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, vedere la documentazione di Microsoft Windows SDK.

[in] pptlHTOrg

Puntatore a una struttura POINTL che definisce l'origine del pennello halftone sulla superficie di destinazione. Quando si usano pennelli halftone, il driver deve allineare il pixel superiore sinistro del pennello con questo punto e ripetere il pennello in base alle relative dimensioni. Il driver deve ignorare questo parametro se il parametro rop4 non richiede un modello.

[in] prclDest

Puntatore a una struttura RECTL che definisce l'area rettangolare da modificare. Questo rettangolo viene specificato nel sistema di coordinate della superficie di destinazione e viene definito da due punti: in alto a sinistra e in basso a destra. I due punti che definiscono il rettangolo non sono sempre ben ordinati, ovvero le coordinate del secondo punto non sono necessariamente maggiori di quelle del primo punto. Il driver deve interscambiare i due valori x e/o i due valori y se il rettangolo di destinazione non è ben ordinato.

Il rettangolo è esclusivo in basso a destra; ovvero, i bordi inferiori e destro non fanno parte della copia.

DrvStretchBltROP non viene mai chiamato con un rettangolo di destinazione vuoto.

[in] prclSrc

Puntatore a una struttura RECTL che definisce l'area da copiare. Questo rettangolo viene specificato nel sistema di coordinate della superficie di origine e viene definito da due punti: in alto a sinistra e in basso a destra. I due punti che definiscono il rettangolo sono sempre ordinati.

Il rettangolo è esclusivo in basso a destra; ovvero, i bordi inferiori e destro non fanno parte della copia.

Il driver deve eseguire il mapping di questo rettangolo al rettangolo definito da prclDest.

[in, optional] pptlMask

Puntatore a una struttura POINTL che definisce un pixel nella maschera a cui punta prclMask . Questo pixel corrisponde al pixel in alto a sinistra nel rettangolo di origine a cui punta prclSrc . Il driver deve ignorare questo parametro se non viene specificata alcuna maschera.

[in] iMode

Specifica il modo in cui i pixel di origine vengono combinati per ottenere pixel di output. La modalità HALFTONE è più lenta rispetto alle altre modalità, ma produce immagini di qualità superiore. Questo parametro può essere uno dei valori seguenti:

Valore Significato
BLACKONWHITE In un trasferimento a blocchi bit compattati, i pixel devono essere combinati con un'operazione AND booleana. In un trasferimento a blocchi bit di estensione, i pixel devono essere replicati.
COLORONCOLOR In un trasferimento a blocchi bit compattati, è necessario ignorare sufficienti 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 booleana. In un trasferimento a blocchi bit di estensione, i pixel devono essere replicati.

[in] pbo

Puntatore alla struttura BRUSHOBJ da usare per definire il modello per il trasferimento a blocchi bit. La routine di BRUSHOBJ_pvGetRbrush servizio di GDI recupera la realizzazione del pennello del dispositivo. Il driver può ignorare questo parametro se il parametro rop4 non richiede un modello.

[in] rop4

Rappresenta un'operazione raster che definisce il modo in cui i pixel di maschera, modello, origine e destinazione vengono combinati per scrivere un pixel di output nell'area di destinazione.

Si tratta di un'operazione raster quaternary, che è un'estensione naturale dell'operazione Rop3 ternaria consueta. Un Rop4 ha 16 bit rilevanti, che sono simili ai 8 bit di una Rop3. Gli altri bit ridondanti del Rop3 vengono ignorati. Il modo più semplice per implementare un Rop4 consiste nel considerare separatamente i suoi 2 byte. Il byte inferiore specifica un valore Rop3 che deve essere calcolato ovunque la maschera a cui punti psoMask sia 1. Il byte elevato specifica un valore Rop3 che può essere calcolato e applicato ovunque la maschera sia zero.

Valore restituito

DrvStretchBltROP deve restituire TRUE al successo. In caso contrario, deve segnalare un codice di errore e restituire FALSE.

Commenti

Il mapping è definito da prclSrc e prclDest. I punti specificati in prclDest e prclSrc si trovano su coordinate integer, che corrispondono ai centri pixel. Un rettangolo definito da due punti di questo tipo è considerato un rettangolo geometrico con due vertici le cui coordinate sono i punti specificati, ma con 0,5 sottratte da ogni coordinata. Le strutture POINTL sono notazione shorthand per specificare questi vertici delle coordinate frazionarie.

Il driver può implementare facoltativamente DrvStretchBltROP. Se il driver esegue l'hook di questa chiamata, può chiamare EngStretchBltROP per eseguire queste operazioni di estensione blit che non supporta.

Requisiti

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

Vedi anche

DrvAlphaBlend

DrvBitBlt

DrvPlgBlt

DrvStretchBlt

DrvTransparentBlt

EngAlphaBlend

EngBitBlt

EngPlgBlt

EngStretchBlt

EngStretchBltROP

EngTransparentBlt