Função StretchDIBits (wingdi.h)
A função StretchDIBits copia os dados de cor de um retângulo de pixels em uma imagem DIB, JPEG ou PNG para o retângulo de destino especificado. Se o retângulo de destino for maior que o retângulo de origem, essa função alonga as linhas e colunas de dados de cor para se ajustar ao retângulo de destino. Se o retângulo de destino for menor que o retângulo de origem, essa função compacta as linhas e colunas usando a operação de varredura especificada.
Sintaxe
int StretchDIBits(
[in] HDC hdc,
[in] int xDest,
[in] int yDest,
[in] int DestWidth,
[in] int DestHeight,
[in] int xSrc,
[in] int ySrc,
[in] int SrcWidth,
[in] int SrcHeight,
[in] const VOID *lpBits,
[in] const BITMAPINFO *lpbmi,
[in] UINT iUsage,
[in] DWORD rop
);
Parâmetros
[in] hdc
Um identificador para o contexto do dispositivo de destino.
[in] xDest
A coordenada x, em unidades lógicas, do canto superior esquerdo do retângulo de destino.
[in] yDest
A coordenada y, em unidades lógicas, do canto superior esquerdo do retângulo de destino.
[in] DestWidth
A largura, em unidades lógicas, do retângulo de destino.
[in] DestHeight
A altura, em unidades lógicas, do retângulo de destino.
[in] xSrc
A coordenada x, em pixels, do retângulo de origem na imagem.
[in] ySrc
A coordenada y, em pixels, do retângulo de origem na imagem.
[in] SrcWidth
A largura, em pixels, do retângulo de origem na imagem.
[in] SrcHeight
A altura, em pixels, do retângulo de origem na imagem.
[in] lpBits
Um ponteiro para os bits de imagem, que são armazenados como uma matriz de bytes. Para obter mais informações, consulte a seção Comentários.
[in] lpbmi
Um ponteiro para uma estrutura BITMAPINFO que contém informações sobre o DIB.
[in] iUsage
Especifica se o membro bmiColors da estrutura BITMAPINFO foi fornecido e, nesse caso, se bmiColors contém valores ou índices vermelhos, verdes, azuis explícitos (RGB). O parâmetro iUsage deve ser um dos valores a seguir.
Valor | Significado |
---|---|
|
A matriz contém índices de 16 bits na paleta lógica do contexto do dispositivo de origem. |
|
A tabela de cores contém valores RGB literais. |
Para obter mais informações, consulte a seção Comentários.
[in] rop
Um código de operação de varredura que especifica como os pixels de origem, o pincel atual do contexto do dispositivo de destino e os pixels de destino devem ser combinados para formar a nova imagem. Para obter uma lista de alguns códigos de operação de varredura comuns, consulte BitBlt.
Retornar valor
Se a função for bem-sucedida, o valor retornado será o número de linhas de verificação copiadas. Observe que esse valor pode ser negativo para conteúdo espelhado.
Se a função falhar ou nenhuma linha de verificação for copiada, o valor retornado será 0.
Se o driver não puder dar suporte à imagem de arquivo JPEG ou PNG passada para StretchDIBits, a função falhará e retornará GDI_ERROR. Se ocorrer falha, o aplicativo deverá fazer fallback em seu próprio suporte a JPEG ou PNG para descompactar a imagem em um bitmap e, em seguida, passar o bitmap para StretchDIBits.
Comentários
A origem de um DIB de baixo para cima é o canto inferior esquerdo; a origem de um DIB de cima para baixo é o canto superior esquerdo.
StretchDIBits cria uma imagem espelho de um bitmap se os sinais dos parâmetros nSrcWidth e nDestWidth ou se os parâmetros nSrcHeight e nDestHeight forem diferentes. Se nSrcWidth e nDestWidth tiverem sinais diferentes, a função criará uma imagem espelho do bitmap ao longo do eixo x. Se nSrcHeight e nDestHeight tiverem sinais diferentes, a função criará uma imagem espelho do bitmap ao longo do eixo y.
StretchDIBits criará uma imagem de cima para baixo se o sinal do membro biHeight da estrutura BITMAPINFOHEADER para o DIB for negativo. Para obter um exemplo de código, consulte Dimensionando uma imagem JPEG ou PNG.
Essa função permite que uma imagem JPEG ou PNG seja passada como a imagem de origem. Como cada parâmetro é usado permanece o mesmo, exceto:
- Se o membro biCompression de BITMAPINFOHEADER for BI_JPEG ou BI_PNG, lpBits apontará para um buffer que contém uma imagem JPEG ou PNG, respectivamente. O membro biSizeImage da estrutura BITMAPINFOHEADER especifica o tamanho do buffer. O parâmetro iUsage deve ser definido como DIB_RGB_COLORS. O parâmetro dwRop deve ser definido como SRCCOPY.
- Para garantir o spool de meta-arquivo adequado durante a impressão, os aplicativos devem chamar o escape CHECKJPEGFORMAT ou CHECKPNGFORMAT para verificar se a impressora reconhece a imagem JPEG ou PNG, respectivamente, antes de chamar StretchDIBits.
Exemplos
Para obter um exemplo, consulte Dimensionamento de uma imagem JPEG ou PNG.
Requisitos
Requisito | Valor |
---|---|
Cliente mínimo com suporte | Windows 2000 Professional [somente aplicativos da área de trabalho] |
Servidor mínimo com suporte | Windows 2000 Server [somente aplicativos da área de trabalho] |
Plataforma de Destino | Windows |
Cabeçalho | wingdi.h (inclua Windows.h) |
Biblioteca | Gdi32.lib |
DLL | Gdi32.dll |