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 가 가리키는 배열을 해석하는 방법을 지정합니다. 이 매개 변수는 다음 값 중 하나일 수 있습니다.
pMesh 매개 변수는 GRADIENT_RECT 구조체의 배열을 가리킵니다. 각 사각형은 왼쪽에서 오른쪽으로 음영 처리됩니다. 특히 왼쪽 위와 왼쪽 아래 픽셀은 오른쪽 위와 오른쪽 아래 픽셀과 같은 색입니다.
pMesh 매개 변수는 GRADIENT_RECT 구조체의 배열을 가리킵니다. 각 사각형은 위에서 아래로 음영 처리되어야 합니다. 특히 왼쪽 위와 오른쪽 위 픽셀은 왼쪽 아래 및 오른쪽 아래 픽셀과 같은 색입니다.
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 포함) |