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