Condividi tramite


struttura DXGK_GDIARG_ALPHABLEND (d3dkmddi.h)

La struttura DXGK_GDIARG_ALPHABLEND descrive le caratteristiche di un'operazione di fusione alfa accelerata dall'hardware GDI.

Sintassi

typedef struct _DXGK_GDIARG_ALPHABLEND {
  [in] RECT    SrcRect;
  [in] RECT    DstRect;
  [in] UINT    SrcAllocationIndex;
  [in] UINT    DstAllocationIndex;
  [in] UINT    NumSubRects;
  [in] RECT    *pSubRects;
  [in] BYTE    SourceConstantAlpha;
  [in] BOOLEAN SourceHasAlpha;
  [in] UINT    SrcPitch;
} DXGK_GDIARG_ALPHABLEND;

Members

[in] SrcRect

Struttura RECT che definisce l'area rettangolare da copiare. Questo rettangolo di origine 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. Questo rettangolo 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 ulteriori 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.

[in] SrcAllocationIndex

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

[in] DstAllocationIndex

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

[in] 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.

[in] SourceConstantAlpha

Fattore di fusione costante da applicare all'intera superficie di origine. Questo valore è compreso nell'intervallo di [0,255], dove 0 è completamente trasparente e 255 è completamente opaco.

[in] SourceHasAlpha

Definisce se si presuppone che la superficie abbia un canale alfa. Se TRUE, si presuppone che la superficie abbia un canale alfa; in caso contrario, il valore è FALSE.

[in] SrcPitch

Passo della superficie di origine, in byte.

Commenti

Se è necessaria un'operazione di trasferimento bit-blocco di bit (bitblt), le proporzioni x e y vengono calcolate rispettivamente come proporzioni delle dimensioni x e y dei membri DstRect e SrcRect e l'operazione di estensione procederà come se il valore COLORONCOLOR in *Wingdi.h sia impostato. 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.

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 alle 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)</code></pre>

Requisiti

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

Vedi anche

RECT