Condividi tramite


struttura DXGK_GDIARG_STRETCHBLT (d3dkmddi.h)

La struttura DXGK_GDIARG_STRETCHBLT descrive le caratteristiche di un'operazione GDI di trasferimento in bit a bit in bit (bitblt) accelerata dall'hardware.

Sintassi

typedef struct _DXGK_GDIARG_STRETCHBLT {
  [in] RECT  SrcRect;
  [in] RECT  DstRect;
  [in] UINT  DstAllocationIndex;
  [in] UINT  SrcAllocationIndex;
       UINT  NumSubRects;
  [in] RECT  *pSubRects;
  union {
    struct {
      UINT Mode : 16;
      UINT MirrorX : 1;
      UINT MirrorY : 1;
    };
    [in] UINT Flags;
  };
  [in] UINT  SrcPitch;
} DXGK_GDIARG_STRETCHBLT;

Members

[in] SrcRect

Struttura RECT che definisce l'area rettangolare da copiare. Questo rettangolo viene specificato nel sistema di coordinate della superficie di origine ed è definito da due punti: superiore sinistro e inferiore destro. I due punti che definiscono il rettangolo sono sempre ordinati correttamente.

Il rettangolo di origine non supererà mai i limiti della superficie di origine, quindi non sovrasporrà mai la superficie di origine.

Questo rettangolo viene mappato al rettangolo di destinazione definito da DstRect.

Per altre informazioni, vedere la sezione Osservazioni.

[in] DstRect

Struttura RECT che definisce l'area rettangolare da modificare. Questo rettangolo viene specificato nel sistema di coordinate della superficie di destinazione ed è definito da due punti: in alto a sinistra e in basso a destra. Il rettangolo è esclusivo in basso a destra; ovvero i bordi inferiori e destro non fanno parte del trasferimento del blocco di bit. I due punti che definiscono il rettangolo sono sempre ordinati correttamente.

Il rettangolo di destinazione definito da DstRect può superare i limiti della superficie di destinazione, ma i sotto rettangoli non possono. Inoltre, tutti i sotto rettangoli sono garantiti per adattarsi all'interno della superficie di destinazione. I rettangoli secondari possono essere vincolati ulteriormente da un rettangolo di delimitazione più piccolo del rettangolo di destinazione.

Per altre informazioni, vedere la sezione Osservazioni.

[in] DstAllocationIndex

Indice dell'elemento nell'elenco di allocazione che specifica l'allocazione a cui fa riferimento il rettangolo di destinazione DstRect .

[in] SrcAllocationIndex

Indice dell'elemento nell'elenco di allocazione che specifica l'allocazione a cui fa riferimento il rettangolo di origine SrcRect.

NumSubRects

Numero di sotto rettangoli nello spazio della superficie di destinazione delimitato dal rettangolo di destinazione DstRect .

[in] pSubRects

Puntatore ai sotto rettangoli nello spazio della superficie di destinazione delimitato dal rettangolo di destinazione DstRect .

[in] Mode

Specifica la modalità di combinazione dei pixel di origine per produrre pixel di output in base al fatto che siano impostati i valori seguenti definiti in Wingdi.h :

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.
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.

Questo tipo di operazione verrà elaborato solo se il driver ha impostato il membro SupportMonoStretchBltModes nella struttura DXGK_PRESENTATIONCAPS .

[in] MirrorX

Specifica se il trasferimento del blocco di bit esteso verrà eseguito in modalità mirror nella xdirection. Questo tipo di operazione verrà elaborato solo se il valore di MirrorX è diverso da zero e il driver ha impostato il membro SupportMirrorStretchBlt nella struttura DXGK_PRESENTATIONCAPS .

[in] MirrorY

Specifica se il trasferimento del blocco di bit esteso verrà eseguito in modalità mirror nella direzione y. Questo tipo di operazione verrà elaborato solo se il valore di MirrorY è diverso da zero e il driver ha impostato il membro SupportMirrorStretchBlt nella struttura DXGK_PRESENTATIONCAPS .

[in] Flags

Valore UINT facoltativo che può essere usato per eseguire il debug del codice del driver.

[in] SrcPitch

Passo della superficie di origine, in byte.

Commenti

I rapporti di estensione x e y vengono calcolati rispettivamente come proporzioni delle dimensioni x e y dei membri DstRect e SrcRect .

La modalità HALFTONE e le modalità STRETCH_HALFTONE definite in Wingdi.h non verranno mai impostate nel membro Mode . La modalità COLORONCOLOR può essere impostata nelle strutture DXGK_GDIARG_ALPHABLEND e DXGK_GDIARG_TRANSPARENTBLT .

Quando i sotto rettangoli vengono trasformati nello spazio della superficie di origine, il risultato è garantito che si trovi all'interno della superficie di origine. La trasformazione delle coordinate di un sotto rettangolo nella superficie di destinazione per le coordinate nella superficie di origine è definita dalle formule seguenti, dove

  • (Xd, Yd) è un punto all'interno del sotto rettangolo
  • (Xs, Ys) è un punto all'interno del rettangolo di origine
float Ws = SrcRect.right - SrcRect.left;
float Wd = DstRect.right - DstRect.left;
int Xs = round((Xd - DstRect.left + 0.5) * Ws/Wd + SrcRect.left - 0.5)
OR
int Xs = truncate((Xd - DstRect.left + 0.5) * Ws/Wd + SrcRect.left)

float Hs = SrcRect.bottom - SrcRect.top;
float Hd = DstRect.bottom - DstRect.top;
int Ys = round((Yd - DstRect.top + 0.5) * Hs/Hd + SrcRect.top - 0.5)
OR
int Ys = truncate((Yd - DstRect.top + 0.5) * Hs/Hd + SrcRect.top)

Requisiti

Requisito Valore
Client minimo supportato Windows 7
Intestazione d3dkmddi.h (include D3dkmddi.h)

Vedi anche

DXGK_GDIARG_ALPHABLEND

DXGK_GDIARG_TRANSPARENTBLT

DXGK_PRESENTATIONCAPS

RECT