Compartilhar via


Função DrvPlgBlt (winddi.h)

A função DrvPlgBlt fornece recursos de transferência de bloco de bits girados entre combinações de superfícies gerenciadas pelo dispositivo e gerenciadas por GDI.

Sintaxe

BOOL DrvPlgBlt(
  [in, out]      SURFOBJ         *psoTrg,
  [in, out]      SURFOBJ         *psoSrc,
  [in, optional] SURFOBJ         *psoMsk,
  [in]           CLIPOBJ         *pco,
  [in, optional] XLATEOBJ        *pxlo,
  [in, optional] COLORADJUSTMENT *pca,
  [in, optional] POINTL          *pptlBrushOrg,
  [in]           POINTFIX        *pptfx,
  [in]           RECTL           *prcl,
  [in, optional] POINTL          *pptl,
  [in]           ULONG           iMode
);

Parâmetros

[in, out] psoTrg

Ponteiro para uma estrutura SURFOBJ que descreve a superfície na qual desenhar.

[in, out] psoSrc

Ponteiro para uma estrutura SURFOBJ que descreve a origem da operação de transferência de bloco de bits.

[in, optional] psoMsk

Ponteiro para uma estrutura SURFOBJ opcional que representa uma máscara para a origem. Ele é definido por um mapa lógico, que é um bitmap com um bit por pixel.

Essa máscara limita a área da origem copiada. Uma máscara tem um rop4 implícito de 0xCCAA, o que significa que a origem deve ser copiada onde quer que a máscara seja uma, mas o destino deve ser deixado sozinho onde quer que a máscara seja zero.

Se esse parâmetro for NULL, rop4 será implicitamente 0xCCCC, o que significa que a origem deve ser copiada em todos os lugares no retângulo de origem.

A máscara é sempre grande o suficiente para conter a fonte relevante; tiling é desnecessário.

[in] pco

Ponteiro para uma estrutura CLIPOBJ que limita a área do destino a ser modificada. As funções GDI enumeram a região do clipe como um conjunto de retângulos.

Sempre que possível, a GDI simplifica o recorte envolvido. Ao contrário da função DrvBitBlt , DrvPlgBlt pode ser chamado com um único retângulo de recorte. Isso impede erros de arredondamento ao recortar a saída.

[in, optional] pxlo

Ponteiro para uma estrutura XLATEOBJ que define como os índices de cor são convertidos entre as superfícies de origem e de destino. O XLATEOBJ também pode ser consultado para localizar a cor RGB para qualquer índice de origem. Se pxlo for NULL, nenhuma tradução será necessária.

Uma transferência de bloco de bits de rotação de alta qualidade é necessária para interpolar cores.

[in, optional] pca

Ponteiro para uma estrutura COLORADJUSTMENT que define os valores de ajuste de cor a serem aplicados ao bitmap de origem antes de alongar os bits. Para obter mais informações sobre essa estrutura, consulte a documentação do SDK do Microsoft Windows.

[in, optional] pptlBrushOrg

Ponteiro para uma estrutura BRUSHOBJ que indica a origem do pincel de meio-tom. Os drivers de dispositivo que usam pincéis de meio tom devem alinhar o pixel superior esquerdo do padrão do pincel com esse ponto na superfície do dispositivo.

[in] pptfx

Ponteiro para três estruturas POINTFIX que definem um paralelismo na superfície de destino. Defina pptfx[0] como A, pptfx[1] como B e pptfx[2] como C. A, B e C definem três vértices de um paralelismo. Um quarto vértice implícito é dado como:

    D = B + C − A

DrvPlgBlt nunca é chamado com collinear A, B e C.

[in] prcl

Ponteiro para uma estrutura RECTL que define a área a ser copiada, no sistema de coordenadas da superfície de origem. Os pontos do retângulo de origem são bem ordenados. DrvPlgBlt nunca receberá um retângulo de origem vazio.

[in, optional] pptl

Ponteiro para uma estrutura POINTL que especifica qual pixel na máscara fornecida corresponde ao pixel superior esquerdo no retângulo de origem. Ignore esse parâmetro se nenhum psoMsk for especificado.

[in] iMode

Define como os pixels de origem são combinados para obter pixels de saída. Este valor pode ser um dos seguintes:

Valor Significado
BLACKONWHITE Em uma transferência de bloco de bits reduzida, os pixels devem ser combinados com uma operação AND. Em uma transferência de bloco de bits de alongamento, os pixels devem ser replicados.
COLORONCOLOR 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 de alongamento, os pixels devem ser replicados.
HALFTONE O driver pode usar grupos de pixels na superfície de saída para aproximar melhor a cor ou o nível cinza da entrada.
WHITEONBLACK Em uma transferência de bloco de bits reduzida, os pixels devem ser combinados com uma operação OR. Em uma transferência de bloco de bits de alongamento, os pixels devem ser replicados.
 

Os métodos WHITEONBLACK, BLACKONWHITE e COLORONCOLOR fornecem compatibilidade para aplicativos antigos, mas não produzem os melhores resultados para superfícies de cores.

Valor retornado

DrvPlgBlt retorna TRUE após o sucesso. Caso contrário, ele relatará um erro e retornará FALSE.

Comentários

Semelhante a DrvStretchBlt, DrvPlgBlt permite que um driver de dispositivo escreva em bitmaps GDI, especialmente quando o driver pode fazer halftoning.

Para transformar o bitmap, essa função executa transferências de bloco de bits de um retângulo definido por prcl para qualquer parallelogram. O parallelogram é definido por pptfx, que aponta para uma matriz de três pontos.

O retângulo de origem em prcl é considerado um retângulo geométrico cujos cantos são deslocados por (-0,5,-0,5) das coordenadas de inteiro fornecidas. Isso corresponde exatamente ao retângulo de origem para DrvStretchBlt. O retângulo de origem é sempre bem ordenado.

O canto superior esquerdo do retângulo de origem é mapeado para o primeiro ponto, A. O canto superior direito do retângulo de origem é mapeado para o segundo ponto, B. O canto inferior esquerdo do retângulo de origem é mapeado para o terceiro ponto, C. O canto inferior direito do retângulo de origem é mapeado para o ponto implícito no parallelogram definido tratando os três pontos fornecidos como vetores e computação:

    D = B + C - A

Observe que um blt estendido pode ser expresso exatamente como um blt de paralelismo, mas as coordenadas fornecidas para o destino terão uma parte fracionária de 0,5.

DrvPlgBlt é opcional para drivers gráficos. Ele é fornecido apenas para determinados tipos de rotação. O driver deve chamar EngPlgBlt se DrvPlgBlt for chamado para executar operações com suporte.

Requisitos

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

Confira também

DrvAlphaBlend

DrvBitBlt

DrvStretchBlt

DrvStretchBltROP

DrvTransparentBlt

EngAlphaBlend

EngBitBlt

EngPlgBlt

EngStretchBlt

EngStretchBltROP

EngTransparentBlt