Compartilhar via


Função DrvTransparentBlt (winddi.h)

A função DrvTransparentBlt fornece recursos de transferência de bloco de bits com transparência.

Sintaxe

BOOL DrvTransparentBlt(
  [in, out]      SURFOBJ  *psoDst,
  [in]           SURFOBJ  *psoSrc,
  [in]           CLIPOBJ  *pco,
  [in, optional] XLATEOBJ *pxlo,
  [in]           RECTL    *prclDst,
  [in]           RECTL    *prclSrc,
  [in]           ULONG    iTransColor,
  [in]           ULONG    ulReserved
);

Parâmetros

[in, out] psoDst

Ponteiro para a estrutura SURFOBJ que identifica a superfície de destino na qual desenhar.

[in] psoSrc

Ponteiro para a estrutura SURFOBJ que identifica a superfície de origem da transferência de bloco de bits.

[in] pco

Ponteiro para uma estrutura CLIPOBJ . As rotinas de serviço CLIPOBJ_Xxx são fornecidas para enumerar a região de clipe como um conjunto de retângulos. Essa enumeração limita a área do destino modificado. Sempre que possível, a GDI simplifica o recorte envolvido.

[in, optional] pxlo

Ponteiro para uma estrutura XLATEOBJ que informa como os índices de cor de origem devem ser traduzidos para gravação na superfície de destino. Se pxlo for NULL, nenhuma tradução será necessária.

[in] prclDst

Ponteiro para uma estrutura RECTL 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.

DrvTransparentBlt nunca é chamado com um retângulo de destino vazio.

[in] prclSrc

Ponteiro para uma estrutura RECTL 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 e, portanto, nunca substituirá a superfície de origem.

Esse retângulo é mapeado para o retângulo de destino definido por prclDst. DrvTransparentBlt nunca é chamado com um retângulo de origem vazio.

[in] iTransColor

Especifica a cor transparente física no formato de superfície de origem. Para dispositivos com paletas, esse valor é um índice de paleta. Para dispositivos sem paletas, esse valor é uma cor RGB no formato usado na superfície de origem. Por exemplo, se o formato da superfície de origem estiver no formato de 5:6:5 RGB, o valor nesse parâmetro também estará na mesma forma.

[in] ulReserved

Reservados; esse parâmetro deve ser definido como zero.

Retornar valor

DrvTransparentBlt retorna TRUE após o sucesso. Caso contrário, retornará FALSE.

Comentários

Opcionalmente, você pode implementar a função DrvTransparentBlt em drivers gráficos.

Há suporte para a transferência de bloco de bits com transparência entre duas superfícies gerenciadas pelo dispositivo ou entre uma superfície gerenciada pelo dispositivo e um bitmap de formato padrão gerenciado por GDI. Os gravadores de driver são incentivados a dar suporte ao caso de blting de bitmaps de dispositivos fora da tela na memória de vídeo para outras superfícies na memória de vídeo; todos os outros casos podem ser pontuados para EngTransparentBlt com pouca penalidade de desempenho. O driver pode fazer chamadas pontuais envolvendo superfícies gerenciadas pelo dispositivo para EngTransparentBlt.

Todos os pixels na superfície de origem que correspondam à cor transparente especificada por iTransColor não são copiados. Para obter uma explicação detalhada de blts transparentes, consulte Copiar Bitmaps.

O driver nunca será chamado com retângulos de origem e destino sobrepostos na mesma superfície.

O driver deve ignorar os bits não utilizados na comparação de teclas de cor, como para o bit mais significativo quando o formato bitmap for 5:5:5 (cinco bits cada um de vermelho, verde e azul).

O driver conecta DrvTransparentBlt definindo o sinalizador HOOK_TRANSPARENTBLT quando chama EngAssociateSurface. Se o driver tiver fisgado DrvTransparentBlt e for chamado para executar uma operação que não dá suporte, o driver deverá ter GDI para manipular a operação encaminhando os dados em uma chamada para EngTransparentBlt.

Requisitos

Requisito Valor
Plataforma de Destino Área de Trabalho
Cabeçalho winddi.h (inclua Winddi.h)

Confira também

DrvBitBlt

DrvPlgBlt

DrvStretchBlt

DrvStretchBltROP

EngAssociateSurface

EngBitBlt

EngPlgBlt

EngStretchBlt

EngStretchBltROP

EngTransparentBlt