Compartilhar via


estrutura DXGK_GDIARG_STRETCHBLT (d3dkmddi.h)

A estrutura DXGK_GDIARG_STRETCHBLT descreve as características de uma operação de transferência de bloco de bits (bitblt) acelerada por hardware GDI.

Sintaxe

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;

Membros

[in] SrcRect

Uma estrutura RECT que define a área retangular a ser copiada. Esse retângulo é 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.

O retângulo de origem 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.

Para obter mais informações, consulte a seção Comentários.

[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 para o canto 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 os sub-retângulos não podem. Além disso, todos os sub-retângulos têm a garantia de caber dentro da superfície de destino. Os sub-retângulos podem ser restringidos ainda mais por um retângulo delimitador menor que o retângulo de destino.

Para obter mais informações, consulte a seção Comentários.

[in] DstAllocationIndex

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

[in] SrcAllocationIndex

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

NumSubRects

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

[in] pSubRects

Um ponteiro para os sub-retângulos no espaço de superfície de destino delimitado pelo retângulo de destino DstRect .

[in] Mode

Especifica como os pixels de origem são combinados para produzir pixels de saída com base nos seguintes valores definidos em Wingdi.h :

Valor Significado
BLACKONWHITE Em uma transferência de bloco de bits reduzida, os pixels devem ser combinados com uma operação AND booliana. Em uma transferência de bloco de bits de alongamento, os pixels devem ser replicados.
WHITEONBLACK Em uma transferência de bloco de bits reduzida, os pixels devem ser combinados com uma operação OR booliana. Em uma transferência de bloco de bits de alongamento, os pixels devem ser replicados.

Esse tipo de operação será processado somente se o driver tiver definido o membro SupportMonoStretchBltModes na estrutura DXGK_PRESENTATIONCAPS .

[in] MirrorX

Especifica se a transferência de bloco de bits elástico será executada no modo espelho no xdirection. Esse tipo de operação será processado somente se o valor de MirrorX não for zero e o driver tiver definido o membro SupportMirrorStretchBlt na estrutura DXGK_PRESENTATIONCAPS .

[in] MirrorY

Especifica se a transferência de bloco de bits elástico será executada no modo espelho na direção y. Esse tipo de operação será processado somente se o valor de MirrorY não for zero e o driver tiver definido o membro SupportMirrorStretchBlt na estrutura DXGK_PRESENTATIONCAPS .

[in] Flags

Valor UINT opcional que pode ser usado para depurar o código do driver.

[in] SrcPitch

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

Comentários

As proporções de alongamento x e y são calculadas respectivamente como as proporções dos tamanhos x e y dos membros DstRect e SrcRect .

Os modos HALFTONE e STRETCH_HALFTONE definidos em Wingdi.h nunca serão definidos no membro Mode . O modo COLORONCOLOR pode ser definido nas estruturas DXGK_GDIARG_ALPHABLEND e DXGK_GDIARG_TRANSPARENTBLT .

Quando sub-retângulos são transformados no espaço da superfície de origem, o resultado é garantido estar 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 fórmulas a seguir, 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)

Requisitos

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

Confira também

DXGK_GDIARG_ALPHABLEND

DXGK_GDIARG_TRANSPARENTBLT

DXGK_PRESENTATIONCAPS

RECT