다음을 통해 공유


DrvGradientFill 함수(winddi.h)

DrvGradientFill 함수는 지정된 기본 형식을 음영으로 지정합니다.

구문

BOOL DrvGradientFill(
  [in, out]      SURFOBJ   *psoDest,
  [in]           CLIPOBJ   *pco,
  [in, optional] XLATEOBJ  *pxlo,
  [in]           TRIVERTEX *pVertex,
  [in]           ULONG     nVertex,
  [in]           PVOID     pMesh,
  [in]           ULONG     nMesh,
  [in]           RECTL     *prclExtents,
  [in]           POINTL    *pptlDitherOrg,
  [in]           ULONG     ulMode
);

매개 변수

[in, out] psoDest

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

[in] pco

CLIPOBJ 구조체에 대한 포인터입니다. CLIPOBJ_Xxx 서비스 루틴은 클립 영역을 사각형 집합으로 열거하기 위해 제공됩니다. 이 열거형은 수정된 대상의 영역을 제한합니다. 가능하면 GDI는 관련된 클리핑을 간소화합니다.

[in, optional] pxlo

XLATEOBJ 구조체에 대한 포인터입니다. 이 매개 변수는 드라이버에서 무시해야 합니다.

[in] pVertex

각 항목에 위치 및 색 정보가 포함된 TRIVERTEX 구조체 배열에 대한 포인터입니다. TRIVERTEX 구조체는 Microsoft Windows SDK 설명서에 설명되어 있습니다.

[in] nVertex

pVertex가 가리키는 배열의 TRIVERTEX 구조체 수를 지정합니다.

[in] pMesh

pVertex가 가리키는 TRIVERTEX 요소의 연결을 정의하는 구조체 배열에 대한 포인터입니다.

사각형을 그릴 때 pMesh 는 각각 사각형을 정의하는 두 개의 TRIVERTEX 요소를 지정하는 GRADIENT_RECT 구조체 배열을 가리킵니다. TRIVERTEX 요소는 대각선으로 반대되는 사각형 꼭짓점 쌍을 나타낼 수 있습니다. 사각형 그리기는 오른쪽 아래에 배타적입니다. TRIVERTEX 및 GRADIENT_RECT 모두 Windows SDK 설명서에 정의되어 있습니다.

삼각형을 그릴 때 pMesh 는 각각 삼각형을 정의하는 3개의 TRIVERTEX 요소를 지정하는 GRADIENT_TRIANGLE 구조체 배열을 가리킵니다. 삼각형 그리기는 오른쪽 아래에 배타적입니다. GRADIENT_TRIANGLE Windows SDK 설명서에 정의되어 있습니다.

[in] nMesh

pMesh가 가리키는 배열의 요소 수를 지정합니다.

[in] prclExtents

그라데이션 드로잉이 발생할 영역을 정의하는 RECTL 구조체에 대한 포인터입니다. 점이 대상 표면의 좌표계에 지정됩니다. 이 매개 변수는 그리기 작업의 크기를 예측하는 데 유용합니다.

[in] pptlDitherOrg

디더링을 위해 표면의 원점을 정의하는 POINTL 구조체에 대한 포인터입니다. 디더 패턴의 왼쪽 위 픽셀이 이 점에 맞춰 정렬됩니다.

[in] ulMode

현재 그리기 모드 및 pMesh 가 가리키는 배열을 해석하는 방법을 지정합니다. 이 매개 변수는 다음 값 중 하나일 수 있습니다.

GRADIENT_FILL_RECT_H

pMesh 매개 변수는 GRADIENT_RECT 구조체의 배열을 가리킵니다. 각 사각형은 왼쪽에서 오른쪽으로 음영 처리됩니다. 특히 왼쪽 위와 왼쪽 아래 픽셀은 오른쪽 위와 오른쪽 아래 픽셀과 같은 색입니다.

GRADIENT_FILL_RECT_V

pMesh 매개 변수는 GRADIENT_RECT 구조체의 배열을 가리킵니다. 각 사각형은 위에서 아래로 음영 처리되어야 합니다. 특히 왼쪽 위와 오른쪽 위 픽셀은 왼쪽 아래 및 오른쪽 아래 픽셀과 같은 색입니다.

GRADIENT_FILL_TRIANGLE

pMesh 매개 변수는 GRADIENT_TRIANGLE 구조체의 배열을 가리킵니다.

각 모드에 대한 그라데이션 채우기 계산은 설명 섹션에 설명되어 있습니다.

반환 값

DrvGradientFill은 성공하면 TRUE 를 반환합니다. 그렇지 않으면 FALSE 를 반환하고 EngSetLastError를 호출하여 오류를 보고합니다.

설명

DrvGradientFill 은 그래픽 드라이버에서 선택적으로 구현할 수 있습니다. GDI는 팔레트화된 표면에 대해 이 함수를 호출하지 않습니다.

드라이버는 EngAssociateSurface 또는 EngModifySurface를 호출할 때 HOOK_GRADIENTFILL 플래그를 설정하여 DrvGradientFill을 후크합니다. 드라이버가 DrvGradientFill 을 후크하고 지원하지 않는 작업을 수행하기 위해 호출된 경우 드라이버는 EngGradientFill 호출에서 데이터를 펀칭하여 GDI가 작업을 처리하도록 해야 합니다.

GDI는 8bpp 대상 표면에 대해 DrvGradientFill 을 호출하지 않습니다.

기본형의 각 픽셀에서 색 값을 계산하기 위한 수식은 다음과 같이 ulMode 에 따라 달라집니다.

세 가지 색 채널 모두에 누적된 총 오류는 8(8)을 초과하면 안 됩니다. 허용되는 오류에 대한 자세한 내용은 디스플레이 드라이버의 특수 효과를 참조하세요.

드라이버는 꼭짓점의 알파 값을 무시해야 하며 알파 혼합을 지원하는 표면의 알파 채널은 변경되지 않습니다.

요구 사항

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

추가 정보

EngAssociateSurface

EngGradientFill