Поделиться через


Функция GradientFill (wingdi.h)

Функция GradientFill заполняет прямоугольники и треугольники.

Синтаксис

BOOL GradientFill(
  [in] HDC        hdc,
  [in] PTRIVERTEX pVertex,
  [in] ULONG      nVertex,
  [in] PVOID      pMesh,
  [in] ULONG      nMesh,
  [in] ULONG      ulMode
);

Параметры

[in] hdc

Дескриптор контекста целевого устройства.

[in] pVertex

Указатель на массив структур TRIVERTEX , каждый из которых определяет вершину.

[in] nVertex

Число вершин в pVertex.

[in] pMesh

Массив GRADIENT_TRIANGLE структур в режиме треугольника или массив GRADIENT_RECT структур в режиме прямоугольника.

[in] nMesh

Количество элементов (треугольников или прямоугольников) в pMesh.

[in] ulMode

Режим градиентной заливки. Этот параметр может принимать одно из указанных ниже значений.

Значение Значение
GRADIENT_FILL_RECT_H
В этом режиме прямоугольник описывается двумя конечными точками. Прямоугольник определяется как постоянный цвет (заданный структурой TRIVERTEX ) для левого и правого краев. GDI интерполирует цвет слева на правый край и заполняет внутреннюю границу.
GRADIENT_FILL_RECT_V
В этом режиме прямоугольник описывается двумя конечными точками. Прямоугольник имеет постоянный цвет (заданный структурой TRIVERTEX ) для верхнего и нижнего краев. GDI интерполирует цвет от верхнего до нижнего края и заполняет внутреннюю часть.
GRADIENT_FILL_TRIANGLE
В этом режиме массив структур TRIVERTEX передается в GDI вместе со списком индексов массива, описывающих отдельные треугольники. GDI выполняет линейную интерполяцию между вершинами треугольника и заполняет внутреннюю структуру. Рисование выполняется непосредственно в режимах 24 и 32 bpp. Дизеринг выполняется в режиме 16, 8, 4 и 1 bpp.

Возвращаемое значение

Если функция выполняется успешно, возвращается значение TRUE.

Если функция завершается сбоем, возвращается значение FALSE.

Комментарии

Чтобы добавить гладкое заливку треугольника, вызовите функцию GradientFill с тремя конечными точками треугольника. GDI линейная интерполяция и заполнение треугольника. Ниже приведены выходные данные затенения треугольника.

Иллюстрация треугольника, который заполняет от оранжевого в верхней точке до пурпурной в нижней строке Чтобы добавить плавное заливку прямоугольника, вызовите GradientFill с левой и нижней правой координатами прямоугольника. При рисовании прямоугольника используются два режима заливки. В горизонтальном режиме прямоугольник затеняется слева направо. В вертикальном режиме прямоугольник затеняется сверху вниз. Ниже приведены выходные данные двух затеняемых прямоугольников : один в горизонтальном режиме, другой в вертикальном режиме: Иллюстрация прямоугольника, который оттеняется от темного слева до светлого в правой части Иллюстрация прямоугольника, который оттеняется от темного в верхней части до светлого снизу . Функция GradientFill использует метод сетки для указания конечных точек объекта для рисования. Все вершины передаются в GradientFill в массиве pVertex . Параметр pMesh указывает, как эти вершины соединены для формирования объекта . При заполнении прямоугольника pMesh указывает на массив GRADIENT_RECT структур. Каждая структура GRADIENT_RECT определяет индекс двух вершин в массиве pVertex . Эти две вершины образуют верхнюю левую и нижнюю правую границы одного прямоугольника.

В случае заполнения треугольника pMesh указывает на массив GRADIENT_TRIANGLE структур. Каждая GRADIENT_TRIANGLE структура задает индекс трех вершин в массиве pVertex . Эти три вершины образуют один треугольник.

Чтобы упростить аппаратное ускорение, эта процедура не обязательно должна быть идеальной в пикселях внутри треугольника.

Обратите внимание, что GradientFill не использует альфа-член структуры TRIVERTEX . Чтобы использовать GradientFill с прозрачностью, вызовите GradientFill, а затем вызовите AlphaBlend с нужными значениями для альфа-канала каждой вершины.

Дополнительные сведения см. в разделах Гладкое заливка, Рисование затеняемого треугольника и Рисование затенения прямоугольника.

Требования

Требование Значение
Минимальная версия клиента Windows 2000 Professional [только классические приложения]
Минимальная версия сервера Windows 2000 Server [только классические приложения]
Целевая платформа Windows
Header wingdi.h (включая Windows.h)
Библиотека Msimg32.lib
DLL Msimg32.dll

См. также раздел

Функции точечных рисунков

Общие сведения о точечных изображениях

EMRGRADIENTFILL

GRADIENT_RECT

GRADIENT_TRIANGLE

TRIVERTEX