다음을 통해 공유


SetDIBitsToDevice 함수(wingdi.h)

SetDIBitsToDevice 함수는 DIB, JPEG 또는 PNG 이미지의 색 데이터를 사용하여 대상 디바이스 컨텍스트와 연결된 디바이스의 지정된 사각형에 있는 픽셀을 설정합니다.

구문

int SetDIBitsToDevice(
  [in] HDC              hdc,
  [in] int              xDest,
  [in] int              yDest,
  [in] DWORD            w,
  [in] DWORD            h,
  [in] int              xSrc,
  [in] int              ySrc,
  [in] UINT             StartScan,
  [in] UINT             cLines,
  [in] const VOID       *lpvBits,
  [in] const BITMAPINFO *lpbmi,
  [in] UINT             ColorUse
);

매개 변수

[in] hdc

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

[in] xDest

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

[in] yDest

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

[in] w

이미지의 너비(논리 단위)입니다.

[in] h

이미지의 높이(논리적 단위)입니다.

[in] xSrc

이미지의 왼쪽 아래 모서리에 있는 x 좌표(논리 단위)입니다.

[in] ySrc

이미지의 왼쪽 아래 모서리에 있는 논리 단위의 y 좌표입니다.

[in] StartScan

이미지의 시작 검사 줄입니다.

[in] cLines

lpvBits 매개 변수가 가리키는 배열에 포함된 DIB 검사 줄의 수입니다.

[in] lpvBits

바이트 배열로 저장된 색 데이터에 대한 포인터입니다. 자세한 내용은 아래 설명 부분을 참조하십시오.

[in] lpbmi

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

[in] ColorUse

BITMAPINFO 구조체의 bmiColors 멤버에 명시적 빨강, 녹색, 파랑(RGB) 값 또는 인덱스가 색상표에 포함되어 있는지 여부를 나타냅니다. 자세한 내용은 아래 설명 부분을 참조하십시오.

fuColorUse 매개 변수는 다음 값 중 하나여야 합니다.

의미
DIB_PAL_COLORS
색 테이블은 현재 선택한 논리 팔레트에 16비트 인덱스의 배열로 구성됩니다.
DIB_RGB_COLORS
색 테이블에는 리터럴 RGB 값이 포함되어 있습니다.

반환 값

함수가 성공하면 반환 값은 설정된 검사 줄 수입니다.

dwHeight가 0인 경우와 같이 검사 줄이 0으로 설정되거나 함수가 실패하면 함수는 0을 반환합니다.

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

설명

비트맵 비트가 시스템 팔레트의 인덱스일 때 최적의 비트맵 그리기 속도를 가져옵니다.

애플리케이션은 GetSystemPaletteEntries 함수를 호출하여 시스템 팔레트 색 및 인덱스를 검색할 수 있습니다. 색 및 인덱스를 검색한 후 애플리케이션은 DIB를 만들 수 있습니다. 시스템 팔레트에 대한 자세한 내용은 색을 참조 하세요.

검색 줄은 RLE 압축 비트맵을 제외하고 DWORD 에 맞춰야 합니다.

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

디바이스 표면의 큰 DIB에서 비트를 설정하는 데 필요한 메모리 양을 줄이기 위해 애플리케이션은 SetDIBitsToDevice를 반복적으로 호출하여 출력을 줄여서 매번 비트맵의 다른 부분을 lpvBits 배열에 배치할 수 있습니다. uStartScancScanLines 매개 변수의 값은 lpvBits 배열에 포함된 비트맵의 부분을 식별합니다.

SetDIBitsToDevice 함수는 전체 화면 MS-DOS 세션이 포그라운드에서 실행되는 동안 백그라운드에서 실행되는 프로세스에서 호출되는 경우 오류를 반환합니다.

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

예제

예를 들어 JPEG 또는 PNG 지원을 위한 프린터 테스트를 참조하세요.

요구 사항

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

추가 정보

BITMAPINFO

비트맵 함수

비트맵 개요

GetSystemPaletteEntries

SetDIBits

StretchDIBits