Метод PathGradientBrush::GetInterpolationColors (gdipluspath.h)
Метод PathGradientBrush::GetInterpolationColors получает предустановленные цвета и позиции смешения, которые в настоящее время указаны для этой кисти градиента пути.
Синтаксис
Status GetInterpolationColors(
[out] Color *presetColors,
[out] REAL *blendPositions,
[in] INT count
);
Параметры
[out] presetColors
Тип: Цвет*
Указатель на массив, который получает предустановленные цвета. Цвет заданного индекса в массиве presetColors соответствует позиции смешения этого же индекса в массиве blendPositions .
[out] blendPositions
Тип: REAL*
Указатель на массив, получающий позиции смешения. Каждая позиция смешения — это число от 0 до 1, где 0 обозначает границу градиента, а 1 — центральную точку. Позиция смешения от 0 до 1 указывает набор всех точек, которые являются определенной частью расстояния от границы до центральной точки. Например, позиция смешения 0,7 обозначает набор всех точек, которые находятся на 70% пути от границы до центральной точки.
[in] count
Тип: INT
Целое число, указывающее количество элементов в массиве presetColors . Это то же, что и количество элементов в массиве blendPositions .
Возвращаемое значение
Тип: Состояние
В случае успешного выполнения метода возвращается ОК, который является элементом перечисления Status .
Если метод завершается сбоем, он возвращает один из других элементов перечисления Status .
Комментарии
Простая кисть градиента пути имеет два цвета: цвет границы и центральный цвет. При рисовании такой кистью цвет постепенно меняется от цвета границы к центру при переходе от пути границы к центральной точке. Вы можете создать более сложный градиент, указав массив предустановленных цветов и массив позиций наложения.
Перед вызовом метода PathGradientBrush::GetInterpolationColors необходимо выделить два буфера: один для хранения массива предустановленных цветов, а другой для хранения массива позиций смешения. Чтобы определить требуемый размер этих буферов, можно вызвать метод PathGradientBrush::GetInterpolationColorCount объекта PathGradientBrush . Размер буфера цвета — это возвращаемое значение PathGradientBrush::GetInterpolationColorCount , умноженное на sizeof(Color). Размер буфера позиций — это значение PathGradientBrush::GetInterpolationColorCount , умноженное на sizeof( REAL).
Примеры
В следующем примере создается объект PathGradientBrush из треугольного пути. Код задает для предустановленных цветов красный, синий и aqua, а для позиций смешения — 0, 0,6 и 1. Код вызывает метод PathGradientBrush::GetInterpolationColorCount объекта PathGradientBrush , чтобы получить количество готовых цветов, заданных для кисти. Затем код выделяет два буфера: один для хранения массива предустановленных цветов, а другой для хранения массива позиций наложения. Вызов метода PathGradientBrush::GetInterpolationColors объекта PathGradientBrush заполняет буферы предустановленными цветами и позициями смешения. Наконец, код заполняет небольшой квадрат каждым из предустановленных цветов.
VOID Example_GetInterpColors(HDC hdc)
{
Graphics graphics(hdc);
// Create a path gradient brush from an array of points, and
// set the interpolation colors for that brush.
Point points[] = {Point(100, 0), Point(200, 200), Point(0, 200)};
PathGradientBrush pthGrBrush(points, 3);
Color col[] = {
Color(255, 255, 0, 0), // red
Color(255, 0, 0, 255), // blue
Color(255, 0, 255, 255)}; // aqua
REAL pos[] = {
0.0f, // red at the boundary
0.6f, // blue 60 percent of the way from the boundary to the center
1.0f}; // aqua at the center
pthGrBrush.SetInterpolationColors(col, pos, 3);
// Obtain information about the path gradient brush.
INT colorCount = pthGrBrush.GetInterpolationColorCount();
Color* colors = new Color[colorCount];
REAL* positions = new REAL[colorCount];
pthGrBrush.GetInterpolationColors(colors, positions, colorCount);
// Fill a small square with each of the interpolation colors.
SolidBrush solidBrush(Color(255, 255, 255, 255));
for(INT j = 0; j < colorCount; ++j)
{
solidBrush.SetColor(colors[j]);
graphics.FillRectangle(&solidBrush, 15*j, 0, 10, 10);
}
delete [] colors;
delete [] positions;
}
Требования
Требование | Значение |
---|---|
Минимальная версия клиента | Windows XP, Windows 2000 Professional [только классические приложения] |
Минимальная версия сервера | Windows 2000 Server [только классические приложения] |
Целевая платформа | Windows |
Header | gdipluspath.h (включая Gdiplus.h) |
Библиотека | Gdiplus.lib |
DLL | Gdiplus.dll |
См. также раздел
Заполнение фигуры цветным градиентом