Função EngStretchBltROP (winddi.h)
A função EngStretchBltROP executa uma transferência de bloco de bits alongamento usando um ROP.
Sintaxe
ENGAPI BOOL EngStretchBltROP(
SURFOBJ *psoDest,
SURFOBJ *psoSrc,
SURFOBJ *psoMask,
CLIPOBJ *pco,
XLATEOBJ *pxlo,
COLORADJUSTMENT *pca,
POINTL *pptlHTOrg,
[in] RECTL *prclDest,
[in] RECTL *prclSrc,
POINTL *pptlMask,
[in] ULONG iMode,
BRUSHOBJ *pbo,
[in] DWORD rop4
);
Parâmetros
psoDest
Ponteiro para uma estrutura SURFOBJ que descreve a superfície na qual desenhar.
psoSrc
Ponteiro para uma estrutura SURFOBJ que descreve a superfície de origem para a transferência de bloco de bits.
psoMask
Ponteiro para uma estrutura SURFOBJ que define uma máscara para a superfície de origem. A máscara é definida por um mapa lógico, que é um bitmap com 1 bit por pixel. Normalmente, uma máscara limita a área a ser modificada na superfície de destino. Essa máscara sempre deve ter o mesmo tamanho que a superfície de origem.
pco
Ponteiro para uma estrutura CLIPOBJ que limita a área a ser modificada no destino. As rotinas de serviço CLIPOBJ_Xxx são fornecidas para enumerar a região de clipe como um conjunto de retângulos.
Sempre que possível, a GDI simplifica o recorte envolvido. No entanto, ao contrário do EngBitBlt, EngStretchBltROP pode ser chamado com um único retângulo de recorte. Isso impede erros de arredondamento ao recortar a saída.
pxlo
Ponteiro para uma estrutura XLATEOBJ que especifica como os índices de cor devem ser convertidos entre as superfícies de origem e destino.
Essa estrutura XLATEOBJ também pode ser consultada para localizar a cor RGB de qualquer índice de origem. Uma transferência de bloco de bits ampliada de alta qualidade precisará interpolar cores em alguns casos.
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, consulte a documentação do SDK do Windows.
pptlHTOrg
Ponteiro para uma estrutura POINTL que define a origem do pincel de meio tom na superfície de destino. Ao usar pincéis de meio tom, a GDI alinha o pixel superior esquerdo do padrão do pincel neste ponto e repete o pincel de acordo com suas dimensões. A GDI ignorará esse parâmetro se o parâmetro rop4 não exigir um padrão.
[in] prclDest
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. Os dois pontos que definem o retângulo nem sempre são bem ordenados, o que significa que as coordenadas do segundo ponto não são necessariamente maiores do que as do primeiro ponto. Se o retângulo de destino não estiver bem ordenado, a GDI o tornará assim.
O retângulo é exclusivo inferior direito; ou seja, suas bordas inferior e direita não fazem parte da cópia.
EngStretchBltROP nunca deve ser chamado com um retângulo de destino vazio.
[in] prclSrc
Ponteiro para uma estrutura RECTL que define a área 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 é exclusivo inferior direito; ou seja, suas bordas inferior e direita não fazem parte da cópia.
Esse retângulo é mapeado para o retângulo para o qual prclDest aponta.
EngStretchBltROP nunca deve ser chamado com um retângulo de origem vazio.
pptlMask
Ponteiro para uma estrutura POINTL que define o pixel na máscara para a qual prclMask aponta. Esse pixel corresponde ao pixel superior esquerdo no retângulo de origem ao qual prclSrc aponta. Esse parâmetro será ignorado se nenhuma máscara for especificada; ou seja, a GDI ignora pptlMask quando prclMask é NULL.
[in] iMode
Especifica como os pixels de origem são combinados para obter pixels de saída. O modo HALFTONE é mais lento do que os outros modos, mas produz imagens de maior qualidade. Esse parâmetro pode usar um dos valores a seguir:
Valor | Significado |
---|---|
BLACKONWHITE | Em uma transferência de bloco de bits reduzida, o GDI combina pixels com uma operação AND booliana. Em uma transferência de bloco de bits alongada, os pixels são replicados. |
COLORONCOLOR | Em uma transferência de bloco de bits reduzida, o GDI ignora pixels suficientes para que os pixels não precisem ser combinados. Em uma transferência de bloco de bits alongada, os pixels são replicados. |
HALFTONE | A GDI usa 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 booliana. Em uma transferência de bloco de bits alongada, os pixels devem ser replicados. |
pbo
Ponteiro para a estrutura BRUSHOBJ a ser usada para definir o padrão para a transferência de bloco de bits. A rotina de serviço BRUSHOBJ_pvGetRbrush da GDI recupera a realização do pincel pelo dispositivo. A GDI ignorará esse parâmetro se o parâmetro rop4 não exigir um padrão.
[in] rop4
Representa uma operação de varredura que define como os pixels de máscara, padrão, origem e destino são combinados para gravar um pixel de saída na superfície de destino.
Esta é uma operação de varredura quaternária, que é uma extensão natural da operação rop3 ternária usual. Um Rop4 tem 16 bits relevantes, que são semelhantes aos 8 bits definidos de um Rop3. (Os outros bits redundantes do Rop3 são ignorados.) A maneira mais simples de implementar um Rop4 é considerar seus 2 bytes separadamente. O byte inferior especifica um Rop3 que deve ser calculado onde quer que a máscara para a qual psoMask aponta seja 1. O byte alto especifica um Rop3 que pode ser calculado e aplicado onde quer que a máscara seja zero.
Retornar valor
EngStretchBltROP retorna TRUE após o sucesso. Caso contrário, ele relatará um erro e retornará FALSE.
Comentários
O driver deve chamar EngStretchBltROP se ele tiver fisgado DrvStretchBltROP , mas não puder dar suporte a todas as operações.
O mapeamento é definido por prclSrc e prclDest. Os pontos especificados em prclDest e prclSrc estão em coordenadas de inteiro que correspondem aos centros de pixel. Um retângulo definido por dois desses pontos é considerado um retângulo geométrico com dois vértices cujas coordenadas são os pontos determinados, mas com 0,5 subtraído de cada coordenada. (As estruturas POINTL são notação abreviada para especificar esses vértices de coordenadas fracionárias.)
Requisitos
Requisito | Valor |
---|---|
Cliente mínimo com suporte | Disponível no Windows 2000 e versões posteriores dos sistemas operacionais Windows. |
Plataforma de Destino | Universal |
Cabeçalho | winddi.h (inclua Winddi.h) |
Biblioteca | Win32k.lib |
DLL | Win32k.sys |