estrutura DXGK_GDIARG_ALPHABLEND (d3dkmddi.h)

A estrutura DXGK_GDIARG_ALPHABLEND descreve as características de uma operação de combinação alfa acelerada por hardware da GDI.

Sintaxe

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;

Membros

[in] SrcRect

Uma estrutura RECT que define a área retangular a ser copiada. Esse retângulo de origem é especificado no sistema de coordenadas da superfície de origem e é definido por dois pontos: superior esquerdo e inferior direito. Os dois pontos que definem o retângulo são sempre bem ordenados. Esse retângulo nunca excederá os limites da superfície de origem, portanto, ele nunca sobrepõe a superfície de origem. Esse retângulo é mapeado para o retângulo de destino definido por DstRect. Confira Comentários para obter mais informações.

[in] DstRect

Uma estrutura RECT que define a área retangular a ser modificada. Esse retângulo é especificado no sistema de coordenadas da superfície de destino e é definido por dois pontos: superior esquerdo e inferior direito. O retângulo é exclusivo inferior direito; ou seja, suas bordas inferior e direita não fazem parte da transferência de bloco de bits. Os dois pontos que definem o retângulo são sempre bem ordenados.

O retângulo de destino definido por DstRect pode exceder os limites da superfície de destino, mas sub-retângulos não podem. Além disso, todos os subtângulos são garantidos para caber dentro da superfície de destino. Sub-retângulos podem ser restringidos ainda mais por um retângulo delimitador menor que o retângulo de destino.

[in] SrcAllocationIndex

Um índice do elemento na lista de alocação que especifica a alocação referenciada pelo retângulo de origem SrcRect .

[in] DstAllocationIndex

Um índice do elemento na lista de alocação que especifica a alocação referenciada pelo retângulo de destino DstRect .

[in] NumSubRects

O número de subtângulos no espaço de superfície de destino delimitado pelo retângulo de destino DstRect .

[in] pSubRects

Um ponteiro para os subtângulos no espaço da superfície de destino.

[in] SourceConstantAlpha

O fator de mesclagem constante a ser aplicado a toda a superfície de origem. Esse valor está no intervalo de [0.255], em que 0 é completamente transparente e 255 é completamente opaco.

[in] SourceHasAlpha

Define se a superfície deve ter um canal alfa. Se TRUE, supõe-se que a superfície tenha um canal alfa; caso contrário, o valor será FALSE.

[in] SrcPitch

O tom da superfície de origem, em bytes.

Comentários

Se uma operação de transferência de bloco de bits estendido (bitblt) for necessária, as proporções de alongamento x e y serão calculadas respectivamente como as proporções dos tamanhos x e y dos membros DstRect e SrcRect , e a operação de alongamento continuará como se o valor COLORONCOLOR em *Wingdi.h estivesse definido. Em uma transferência de bloco de bits reduzida, pixels suficientes devem ser ignorados para que os pixels não precisem ser combinados. Em uma transferência de bloco de bits alongada, os pixels devem ser replicados.

Quando sub-retângulos são transformados no espaço da superfície de origem, é garantido que o resultado esteja dentro da superfície de origem. A transformação das coordenadas de um sub-retângulo na superfície de destino para coordenadas na superfície de origem é definida pelas seguintes fórmulas, em que:

  • (Xd, Yd) é um ponto dentro do sub-retângulo
  • (Xs, Ys) é um ponto dentro do retângulo de origem
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>

Requisitos

Requisito Valor
Cliente mínimo com suporte Windows 7
Cabeçalho d3dkmddi.h (inclua D3dkmddi.h)

Confira também

RECT