Funzione EngStretchBlt (winddi.h)

La funzione EngStretchBlt fa sì che GDI eseeva un trasferimento a blocchi di bit esteso.

Sintassi

ENGAPI BOOL EngStretchBlt(
       SURFOBJ         *psoDest,
       SURFOBJ         *psoSrc,
       SURFOBJ         *psoMask,
       CLIPOBJ         *pco,
       XLATEOBJ        *pxlo,
  [in] COLORADJUSTMENT *pca,
  [in] POINTL          *pptlHTOrg,
  [in] RECTL           *prclDest,
  [in] RECTL           *prclSrc,
       POINTL          *pptlMask,
  [in] ULONG           iMode
);

Parametri

psoDest

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

psoSrc

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

psoMask

Puntatore a una struttura SURFOBJ che definisce una maschera per l'origine. La maschera è definita da una mappa logica, ovvero una bitmap con un bit per pixel.

La maschera limita l'area dell'origine copiata. Se questo parametro viene specificato, ha un rop4 implicito di 0xCCAA, ovvero l'origine deve essere copiata ovunque la maschera sia 1, ma la destinazione deve essere lasciata da sola ovunque la maschera sia 0.

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

pco

Puntatore a una struttura CLIPOBJ che limita l'area da modificare nella destinazione. I servizi GDI vengono forniti per enumerare l'area di ritaglio come set di rettangoli.

Quando possibile, GDI semplifica il ritaglio. Tuttavia, a differenza di DrvBitBlt, EngStretchBlt può essere chiamato con un singolo rettangolo di ritaglio. In questo modo si evitano errori di arrotondamento nell'ritaglio dell'output.

pxlo

Puntatore a una struttura XLATEOBJ che specifica la modalità di conversione degli indici di colore tra le superfici di origine e di destinazione.

È anche possibile eseguire una query su questa struttura XLATEOBJ per trovare il colore RGB per qualsiasi indice di origine. Un trasferimento a blocchi di bit di alta qualità deve interpolare i colori in alcuni casi.

[in] pca

Puntatore a una struttura COLORADJUSTMENT che definisce i valori di regolazione del colore 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 mezzotone. I driver che usano pennelli mezzotone devono allineare il pixel superiore sinistro del motivo del pennello con questo punto sulla superficie del dispositivo.

[in] prclDest

Puntatore a una struttura RECTL che definisce l'area da modificare nel sistema di coordinate della superficie di destinazione. Questo rettangolo è definito da due punti non ordinati correttamente, ovvero le coordinate del secondo punto non sono necessariamente maggiori di quelle del primo punto. Il rettangolo descritto non include i bordi inferiore e destro. Questa funzione non viene mai chiamata con un rettangolo di destinazione vuoto.

Se il rettangolo di destinazione non è ordinato correttamente, EngStretchBlt lo rende ben ordinato.

[in] prclSrc

Puntatore a una struttura RECTL che definisce l'area da copiare, nel sistema di coordinate della superficie di origine. Il rettangolo verrà mappato al rettangolo definito da prclDest. Questa funzione non viene mai assegnata a un rettangolo di origine vuoto e i punti del rettangolo di origine sono sempre ben ordinati.

Il mapping è definito da prclSrc e prclDest. I punti specificati in prclDest e prclSrc si trovano sulle 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 abbreviata per specificare questi vertici delle coordinate frazionarie.

I bordi di qualsiasi rettangolo non intersecano mai un pixel, ma si spostano intorno a un set di pixel. I pixel all'interno del rettangolo sono quelli previsti per un rettangolo esclusivo inferiore destro. EngStretchBlt esegue il mapping del rettangolo di origine geometrica esattamente sul rettangolo di destinazione geometrica.

pptlMask

Puntatore a una struttura POINTL che definisce il pixel nella maschera specificata che corrisponde al pixel superiore sinistro nel rettangolo di origine. Questo parametro viene ignorato se non viene specificata alcuna maschera.

[in] iMode

Specifica la modalità di combinazione dei pixel di origine per ottenere i pixel di output. La modalità HALFTONE è più lenta rispetto alle altre modalità, ma produce immagini di qualità superiore.

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

Valore restituito

Il valore restituito è TRUE se la funzione ha esito positivo. In caso contrario, è FALSE e viene segnalato un codice di errore.

Commenti

Questa funzione consente di applicare lo stesso algoritmo di halftoning alle bitmap GDI e alle superfici del dispositivo.

Il driver deve chiamare EngStretchBlt se ha collegato DrvStretchBlt e viene chiamato per eseguire un'operazione che il driver non supporta.

Requisiti

Requisito Valore
Client minimo supportato Disponibile in Windows 2000 e versioni successive dei sistemi operativi Windows.
Piattaforma di destinazione Universale
Intestazione winddi.h (include Winddi.h)
Libreria Win32k.lib
DLL Win32k.sys

Vedi anche

CLIPOBJ

DrvBitBlt

DrvStretchBlt

SURFOBJ

XLATEOBJ