다음을 통해 공유


DrvStretchBlt 함수(winddi.h)

DrvStretchBlt 함수는 디바이스 관리 표면과 GDI 관리형 표면의 조합 간에 확장 비트 블록 전송 기능을 제공합니다.

구문

BOOL DrvStretchBlt(
  [in, out]      SURFOBJ         *psoDest,
  [in, out]      SURFOBJ         *psoSrc,
  [in, optional] SURFOBJ         *psoMask,
  [in]           CLIPOBJ         *pco,
  [in, optional] XLATEOBJ        *pxlo,
  [in, optional] COLORADJUSTMENT *pca,
  [in]           POINTL          *pptlHTOrg,
  [in]           RECTL           *prclDest,
  [in]           RECTL           *prclSrc,
  [in, optional] POINTL          *pptlMask,
  [in]           ULONG           iMode
);

매개 변수

[in, out] psoDest

그릴 표면을 식별하는 SURFOBJ 구조체에 대한 포인터입니다.

[in, out] psoSrc

비트 블록 전송 작업의 원본을 정의하는 SURFOBJ 구조체에 대한 포인터입니다.

[in, optional] psoMask

소스에 대한 마스크를 제공하는 표면을 정의하는 SURFOBJ 구조체에 대한 선택적 포인터입니다. 마스크는 픽셀당 1비트인 비트맵인 논리 맵에 의해 정의됩니다.

마스크는 복사되는 원본의 영역을 제한합니다. 이 매개 변수를 지정하면 0xCCAA 암시적 rop4 가 있습니다. 즉, 마스크가 하나일 때마다 원본을 복사해야 하지만 마스크가 0인 경우 대상은 혼자 두어야 합니다.

이 매개 변수가 NULL이면 0xCCCC 암시적 rop4 가 있습니다. 즉, 원본 사각형의 모든 위치에서 원본을 복사해야 합니다.

마스크는 항상 관련 원본을 포함할 수 있을 만큼 커야 합니다. 타일링은 필요하지 않습니다.

[in] pco

대상에서 수정할 영역을 제한하는 CLIPOBJ 구조체에 대한 포인터입니다. GDI 서비스는 클립 영역을 사각형 집합으로 열거하기 위해 제공됩니다.

가능하면 GDI는 관련된 클리핑을 간소화합니다. 그러나 DrvBitBlt와 달리 DrvStretchBlt 는 단일 클리핑 사각형으로 호출할 수 있습니다. 이렇게 하면 출력을 클리핑할 때 반올림 오류가 발생하지 않습니다.

[in, optional] pxlo

원본 표면과 대상 표면 간에 색 인덱스를 변환하는 방법을 지정하는 XLATEOBJ 구조체에 대한 포인터입니다. pxloNULL인 경우 변환이 필요하지 않습니다.

XLATEOBJ 구조체를 쿼리하여 모든 원본 인덱스에서 RGB 색을 찾을 수도 있습니다. 고품질 스트레칭 비트 블록 전송은 경우에 따라 색을 보간해야 합니다.

[in, optional] pca

비트를 확장하기 전에 원본 비트맵에 적용할 색 조정 값을 정의하는 COLORADJUSTMENT 구조체에 대한 포인터입니다. (Microsoft Windows SDK 설명서를 참조하세요.)

[in] pptlHTOrg

하프톤 브러시의 원점을 지정하는 POINTL 구조체에 대한 포인터입니다. 하프톤 브러시를 사용하는 디바이스 드라이버는 브러시 패턴의 왼쪽 위 픽셀을 디바이스 표면의 이 지점에 맞춰야 합니다.

[in] prclDest

대상 표면의 좌표계에서 수정할 영역을 정의하는 RECTL 구조체에 대한 포인터입니다. 이 사각형은 반드시 잘 정렬되지 않은 두 개의 점으로 정의됩니다. 즉, 두 번째 점의 좌표가 반드시 첫 번째 점의 좌표보다 크지는 않습니다. 설명하는 사각형에는 아래쪽 및 오른쪽 가장자리가 포함되지 않습니다. 이 함수는 빈 대상 사각형으로 호출되지 않습니다.

DrvStretchBlt 는 대상 사각형이 잘 정렬되지 않은 경우 두 x 값 및/또는 두 y 값을 교환해야 합니다.

[in] prclSrc

원본 표면의 좌표계에서 복사할 영역을 정의하는 RECTL 구조체에 대한 포인터입니다. 사각형은 두 점으로 정의되며 prclDest로 정의된 사각형에 매핑됩니다. 원본 사각형의 점이 잘 정렬됩니다. 이 함수에는 빈 원본 사각형이 제공되지 않습니다.

매핑은 prclSrcprclDest로 정의됩니다. prclDestprclSrc에 지정된 포인트는 픽셀 가운데에 해당하는 정수 좌표에 있습니다. 이러한 두 점으로 정의된 사각형은 좌표가 지정된 점이지만 각 좌표에서 0.5를 뺀 두 개의 꼭짓점이 있는 기하학적 사각형으로 간주됩니다. POINTL 구조체는 이러한 소수 좌표 꼭짓점을 지정하기 위한 약식 표기법으로 간주되어야 합니다.

사각형의 가장자리는 픽셀과 교차하지 않고 픽셀 집합을 돌아다닐 수 있습니다. 사각형 내의 픽셀은 "오른쪽 아래 배타적" 사각형에 필요한 픽셀입니다. DrvStretchBlt 는 기하학적 원본 사각형을 기하학적 대상 사각형에 정확히 매핑합니다.

[in, optional] pptlMask

지정된 마스크의 픽셀이 원본 사각형의 왼쪽 위 픽셀에 해당하는 픽셀을 지정하는 POINTL 구조체에 대한 포인터입니다. 마스크가 지정되지 않은 경우 이 매개 변수를 무시합니다.

[in] iMode

원본 픽셀을 결합하여 출력 픽셀을 가져오는 방법을 지정합니다. HALFTONE 모드는 다른 모드보다 느리지만 고품질 이미지를 생성합니다.

의미
BLACKONWHITE 축소된 비트 블록 전송에서 픽셀은 부울 AND 연산과 결합되어야 합니다. 확장 비트 블록 전송에서 픽셀을 복제해야 합니다.
COLORONCOLOR 축소된 비트 블록 전송에서는 픽셀을 결합할 필요가 없도록 충분한 픽셀을 무시해야 합니다. 확장 비트 블록 전송에서 픽셀을 복제해야 합니다.
하프톤 드라이버는 출력 표면의 픽셀 그룹을 사용하여 입력의 색 또는 회색 수준을 가장 잘 근사화할 수 있습니다.
WHITEONBLACK 축소된 비트 블록 전송에서 픽셀을 부울 OR 연산과 결합해야 합니다. 확장 비트 블록 전송에서 픽셀을 복제해야 합니다.

반환 값

함수가 성공하면 반환 값은 TRUE 입니다. 그렇지 않으면 FALSE이고 오류 코드가 기록됩니다.

설명

DrvStretchBlt 를 사용하면 특히 드라이버가 하프톤을 수행할 수 있는 경우 디바이스 드라이버가 GDI 비트맵에 쓸 수 있습니다. 이 함수를 사용하면 GDI 비트맵 및 디바이스 화면에 동일한 하프톤 알고리즘을 적용할 수 있습니다.

이 함수는 정수 배수와 같은 특정 형태의 스트레칭만 처리하도록 제공할 수 있습니다. 드라이버가 호출을 후크하고 지원하지 않는 작업을 수행하라는 메시지가 표시되면 드라이버는 GDI가 처리할 데이터를 EngStretchBlt 로 전달해야 합니다.

드라이버가 GDI가 하프톤 처리를 원하고 적절한 iMode 값을 확인하려는 경우 드라이버는 DrvStretchBlt를 후크하고, iMode를 HALFTONE으로 설정하고, 설정된 iMode 값으로 EngStretchBlt를 사용하여 GDI로 다시 호출할 수 있습니다.

DrvStretchBlt 는 디스플레이 드라이버에 대한 선택 사항입니다.

요구 사항

요구 사항
대상 플랫폼 데스크톱
머리글 winddi.h(Winddi.h 포함)

추가 정보

CLIPOBJ

DrvBitBlt

EngStretchBlt

SURFOBJ

XLATEOBJ