StretchDIBits 함수(wingdi.h)

StretchDIBits 함수는 DIB, JPEG 또는 PNG 이미지의 픽셀 사각형에 대한 색 데이터를 지정된 대상 사각형에 복사합니다. 대상 사각형이 원본 사각형보다 큰 경우 이 함수는 대상 사각형에 맞게 색 데이터의 행과 열을 늘립니다. 대상 사각형이 원본 사각형보다 작은 경우 이 함수는 지정된 래스터 작업을 사용하여 행과 열을 압축합니다.

구문

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

매개 변수

[in] hdc

대상 디바이스 컨텍스트에 대한 핸들입니다.

[in] xDest

대상 사각형의 왼쪽 위 모서리에 있는 x 좌표(논리 단위)입니다.

[in] yDest

대상 사각형의 왼쪽 위 모서리에 있는 논리 단위의 y 좌표입니다.

[in] DestWidth

대상 사각형의 너비(논리 단위)입니다.

[in] DestHeight

대상 사각형의 높이(논리 단위)입니다.

[in] xSrc

이미지에 있는 원본 사각형의 x 좌표(픽셀)입니다.

[in] ySrc

이미지에서 원본 사각형의 y 좌표(픽셀)입니다.

[in] SrcWidth

이미지의 원본 사각형 너비(픽셀)입니다.

[in] SrcHeight

이미지의 원본 사각형 높이(픽셀)입니다.

[in] lpBits

바이트 배열로 저장되는 이미지 비트에 대한 포인터입니다. 자세한 내용은 주의 섹션을 참조하세요.

[in] lpbmi

DIB에 대한 정보를 포함하는 BITMAPINFO 구조체에 대한 포인터입니다.

[in] iUsage

BITMAPINFO 구조체의 bmiColors 멤버가 제공되었는지 여부와 bmiColors에 명시적 빨강, 녹색, 파랑(RGB) 값 또는 인덱스가 포함되어 있는지 여부를 지정합니다. iUsage 매개 변수는 다음 값 중 하나여야 합니다.

의미
DIB_PAL_COLORS
배열에는 원본 디바이스 컨텍스트의 논리적 팔레트에 16비트 인덱스가 포함되어 있습니다.
DIB_RGB_COLORS
색 테이블에는 리터럴 RGB 값이 포함되어 있습니다.
 

자세한 내용은 주의 섹션을 참조하세요.

[in] rop

원본 픽셀, 대상 디바이스 컨텍스트의 현재 브러시 및 대상 픽셀을 결합하여 새 이미지를 형성하는 방법을 지정하는 래스터 작업 코드입니다. 몇 가지 일반적인 래스터 작업 코드 목록은 BitBlt를 참조하세요.

반환 값

함수가 성공하면 반환 값은 복사된 검사 줄의 수입니다. 이 값은 미러된 콘텐츠에 대해 음수일 수 있습니다.

함수가 실패하거나 스캔 줄이 복사되지 않으면 반환 값은 0입니다.

드라이버가 StretchDIBits에 전달된 JPEG 또는 PNG 파일 이미지를 지원할 수 없는 경우 함수는 실패하고 GDI_ERROR 반환합니다. 오류가 발생하는 경우 애플리케이션은 자체 JPEG 또는 PNG 지원으로 대체하여 이미지를 비트맵으로 압축 해제한 다음 비트맵을 StretchDIBits에 전달해야 합니다.

설명

상향식 DIB의 원점은 왼쪽 아래 모서리입니다. 하향식 DIB의 원점은 왼쪽 위 모서리입니다.

StretchDIBitsnSrcWidth 및 nDestWidth 매개 변수의 기호가 있거나 nSrcHeightnDestHeight 매개 변수가 다른 경우 비트맵의 미러 이미지를 만듭니다. nSrcWidthnDestWidth에 다른 기호가 있는 경우 함수는 x축을 따라 비트맵의 미러 이미지를 만듭니다. nSrcHeightnDestHeight에 다른 기호가 있는 경우 함수는 y축을 따라 비트맵의 미러 이미지를 만듭니다.

StretchDIBits는 DIB에 대한 BITMAPINFOHEADER 구조체의 biHeight 멤버 기호가 음수이면 하향식 이미지를 만듭니다. 코드 예제는 JPEG 또는 PNG 이미지 크기 조정을 참조하세요.

이 함수를 사용하면 JPEG 또는 PNG 이미지를 원본 이미지로 전달할 수 있습니다. 다음을 제외하고 각 매개 변수를 사용하는 방법은 동일하게 유지됩니다.

  • BITMAPINFOHEADERbiCompression 멤버가 BI_JPEG 또는 BI_PNG 경우 lpBits는 각각 JPEG 또는 PNG 이미지가 포함된 버퍼를 가리킵니다. BITMAPINFOHEADER 구조체의 biSizeImage 멤버는 버퍼의 크기를 지정합니다. iUsage 매개 변수는 DIB_RGB_COLORS 설정해야 합니다. dwRop 매개 변수는 SRCCOPY로 설정해야 합니다.
  • 인쇄하는 동안 적절한 메타파일 스풀링을 보장하려면 애플리케이션에서 STRETCHDIBits를 호출하기 전에 CHECKJPEGFORMAT 또는 CHECKPNGFORMAT 이스케이프를 호출하여 프린터가 JPEG 또는 PNG 이미지를 각각 인식하는지 확인해야 합니다.
Icm: 색 관리는 iEnableICM 매개 변수가 ICM_ON 설정된 SetICMMode를 호출하여 색 관리를 사용하도록 설정한 경우 수행됩니다. lpBitsInfo로 지정된 비트맵에 감마 및 엔드포인트 멤버를 지정하는 BITMAPV4HEADER 또는 감마 및 엔드포인트 멤버 또는 profileData 및 profileSize 멤버를 지정하는 BITMAPV5HEADER 있는 경우 호출은 비트맵의 픽셀을 디바이스 컨텍스트의 원본 색 공간이 아닌 해당 멤버가 설명하는 색 공간에서 표현되는 것으로 처리합니다.

예제

예제는 JPEG 또는 PNG 이미지 크기 조정을 참조하세요.

요구 사항

요구 사항
지원되는 최소 클라이언트 Windows 2000 Professional[데스크톱 앱만]
지원되는 최소 서버 Windows 2000 Server[데스크톱 앱만]
대상 플랫폼 Windows
헤더 wingdi.h(Windows.h 포함)
라이브러리 Gdi32.lib
DLL Gdi32.dll

추가 정보

BITMAPINFO

비트맵 함수

비트맵 개요

SetMapMode

SetStretchBltMode