다음을 통해 공유


DrvPlgBlt 함수(winddi.h)

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

구문

BOOL DrvPlgBlt(
  [in, out]      SURFOBJ         *psoTrg,
  [in, out]      SURFOBJ         *psoSrc,
  [in, optional] SURFOBJ         *psoMsk,
  [in]           CLIPOBJ         *pco,
  [in, optional] XLATEOBJ        *pxlo,
  [in, optional] COLORADJUSTMENT *pca,
  [in, optional] POINTL          *pptlBrushOrg,
  [in]           POINTFIX        *pptfx,
  [in]           RECTL           *prcl,
  [in, optional] POINTL          *pptl,
  [in]           ULONG           iMode
);

매개 변수

[in, out] psoTrg

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

[in, out] psoSrc

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

[in, optional] psoMsk

원본의 마스크를 나타내는 선택적 SURFOBJ 구조체에 대한 포인터입니다. 픽셀당 1비트인 비트맵인 논리 맵에 의해 정의됩니다.

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

이 매개 변수가 NULL인 경우 rop4 는 암시적으로 0xCCCC 원본 사각형의 모든 위치에서 원본을 복사해야 합니다.

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

[in] pco

수정할 대상의 영역을 제한하는 CLIPOBJ 구조체에 대한 포인터입니다. GDI 함수는 클립 영역을 사각형 집합으로 열거합니다.

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

[in, optional] pxlo

원본 표면과 대상 표면 간에 색 인덱스를 변환하는 방법을 정의하는 XLATEOBJ 구조체에 대한 포인터입니다. XLATEOBJ를 쿼리하여 모든 원본 인덱스에서 RGB 색을 찾을 수도 있습니다. pxloNULL인 경우 변환이 필요하지 않습니다.

색을 보간하려면 고품질 회전 비트 블록 전송이 필요합니다.

[in, optional] pca

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

[in, optional] pptlBrushOrg

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

[in] pptfx

대상 화면에서 병렬 변환을 정의하는 세 개의 POINTFIX 구조체에 대한 포인터입니다. pptfx[0]을 A로, pptfx[1]을 B로, pptfx[2]를 C로 정의합니다. A, B 및 C는 병렬 프로그래밍의 세 가지 꼭짓점을 정의합니다. 네 번째 암시적 꼭짓점은 다음과 같이 지정됩니다.

    D = B + C − A

DrvPlgBlt 은 A, B 및 C collinear로 호출되지 않습니다.

[in] prcl

원본 표면의 좌표계에서 복사할 영역을 정의하는 RECTL 구조체에 대한 포인터입니다. 원본 사각형의 점이 잘 정렬됩니다. DrvPlgBlt 에는 빈 원본 사각형이 제공되지 않습니다.

[in, optional] pptl

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

[in] iMode

원본 픽셀을 결합하여 출력 픽셀을 가져오는 방법을 정의합니다. 이 값은 다음 중 하나일 수 있습니다.

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

WHITEONBLACK, BLACKONWHITE 및 COLORONCOLOR 메서드는 이전 애플리케이션에 대한 호환성을 제공하지만 색 표면에 가장 적합한 결과를 생성하지는 않습니다.

반환 값

DrvPlgBlt은 성공하면 TRUE 를 반환합니다. 그렇지 않으면 오류를 보고하고 FALSE를 반환합니다.

설명

DrvStretchBlt와 마찬가지로 DrvPlgBlt를 사용하면 특히 드라이버가 하프톤을 수행할 수 있는 경우 디바이스 드라이버가 GDI 비트맵에 쓸 수 있습니다.

비트맵을 변환하기 위해 이 함수는 prcl 로 정의된 사각형에서 모든 병렬로 비트 블록 전송을 수행합니다. parallelogram은 3개의 점 배열을 가리키는 pptfx로 정의됩니다.

prcl의 원본 사각형은 지정된 정수 좌표에서 모서리가 (-0.5,-0.5)로 변위되는 기하학적 사각형으로 간주됩니다. DrvStretchBlt의 원본 사각형과 정확히 일치합니다. 원본 사각형은 항상 잘 정렬됩니다.

원본 사각형의 왼쪽 위 모서리가 첫 번째 점인 A에 매핑됩니다. 원본 사각형의 오른쪽 위 모서리는 두 번째 점 B에 매핑됩니다. 원본 사각형의 왼쪽 아래 모서리는 세 번째 점인 C에 매핑됩니다. 원본 사각형의 오른쪽 아래 모서리는 지정된 세 점을 벡터 및 컴퓨팅으로 처리하여 정의된 병렬 프로그래밍의 암시적 지점에 매핑됩니다.

    D = B + C - A

스트레치 Blt은 정확히 병렬 프로그래밍 Blt로 표현할 수 있지만 대상에 지정된 좌표의 소수 부분은 0.5입니다.

DrvPlgBlt 은 그래픽 드라이버에 대한 선택 사항입니다. 특정 유형의 회전에 대해서만 제공됩니다. DrvPlgBlt가 호출되어 지원하지 않는 작업을 수행하는 경우 드라이버는 EngPlgBlt를 호출해야 합니다.

요구 사항

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

추가 정보

DrvAlphaBlend

DrvBitBlt

DrvStretchBlt

DrvStretchBltROP

DrvTransparentBlt

EngAlphaBlend

EngBitBlt

EngPlgBlt

EngStretchBlt

EngStretchBltROP

EngTransparentBlt