Метод LinearGradientBrush::GetInterpolationColorCount (gdiplusbrush.h)
Метод LinearGradientBrush::GetInterpolationColorCount получает количество цветов, заданных для интерполяции для этой кисти линейного градиента.
Синтаксис
INT GetInterpolationColorCount();
Возвращаемое значение
Тип: INT
Этот метод возвращает количество цветов, которые должны быть интерполированы для этой кисти линейного градиента. Если цвета не были заданы с помощью LinearGradientBrush::SetInterpolationColors или если в LinearGradientBrush::SetInterpolationColors были переданы недопустимые позиции, то LinearGradientBrush::GetInterpolationColorCount возвращает значение 0.
Комментарии
Простая линейная градиентная кисть имеет два цвета: цвет на начальной границе и цвет на конечной границе. При рисовании с помощью такой кисти цвет постепенно меняется от начального к конечному цвету по мере перехода от начальной границы к конечной. Вы можете создать более сложный градиент с помощью метода LinearGradientBrush::SetInterpolationColors , чтобы указать массив цветов и их соответствующие позиции смешения, которые будут интерполированы для этой линейной кисти градиента.
Вы можете получить цвета и позиции наложения, которые в настоящее время заданы для кисти линейного градиента, вызвав ее метод LinearGradientBrush::GetInterpolationColors . Перед вызовом метода LinearGradientBrush::GetInterpolationColors необходимо выделить два буфера: один для хранения массива цветов, а другой для хранения массива позиций наложения. Чтобы определить требуемый размер этих буферов, можно вызвать метод LinearGradientBrush::GetInterpolationColorCount . Размер буфера цветов — это возвращаемое значение LinearGradientBrush::GetInterpolationColorCount , умноженное на sizeof(Color). Размер буфера позиций смешения — это значение LinearGradientBrush::GetInterpolationColorCount , умноженное на sizeof( REAL).
Примеры
В следующем примере для цветов, которые должны быть интерполированы для этой кисти линейного градиента, задается красный, синий и зеленый, а для позиций смешения заданы значения 0, 0,3 и 1. Код вызывает метод LinearGradientBrush::GetInterpolationColorCount объекта LinearGradientBrush , чтобы получить количество цветов, заданных для интерполяции для кисти. Затем код получает цвета и их положение. Затем код заполняет маленький прямоугольник каждым цветом.
VOID Example_GetInterpColors(HDC hdc)
{
Graphics myGraphics(hdc);
// Create a linear gradient brush, and set the colors to be interpolated.
Color col[] = {
Color(255, 255, 0, 0), // red
Color(255, 0, 0, 255), // blue
Color(255, 0, 255, 0)}; // green
REAL pos[] = {
0.0f, // red at the left edge
0.3f, // blue at 30 percent of the distance from
// left edge to right edge
1.0f}; // green at the right edge
LinearGradientBrush linGrBrush(
Point(0, 0),
Point(100, 0),
Color(255, 0, 0, 0), // black
Color(255, 255, 255, 255)); // white
linGrBrush.SetInterpolationColors(col, pos, 3);
// Obtain information about the linear gradient brush.
INT colorCount = 0;
Color* colors = NULL;
REAL* positions = NULL;
// How many colors have been specified to be interpolated
// for this brush?
colorCount = linGrBrush.GetInterpolationColorCount();
// Allocate a buffer large enough to hold the set of colors.
colors = new Color[colorCount];
// Allocate a buffer to hold the relative positions of the colors.
positions = REAL[colorCount];
// Get the colors and their relative positions.
linGrBrush.GetInterpolationColors(colors, positions, colorCount);
// Fill a small rectangle with each of the colors.
SolidBrush* pSolidBrush;
for(INT j = 0; j < colorCount; j++)
{
pSolidBrush = new SolidBrush(colors[j]);
myGraphics.FillRectangle(pSolidBrush, 15*j, 0, 10, 10);
delete(pSolidBrush);
}
}
Требования
Минимальная версия клиента | Windows XP, Windows 2000 Профессиональная [только классические приложения] |
Минимальная версия сервера | Windows 2000 Server [только классические приложения] |
Целевая платформа | Windows |
Header | gdiplusbrush.h (включая Gdiplus.h) |
Библиотека | Gdiplus.lib |
DLL | Gdiplus.dll |
См. также раздел
Заполнение фигуры цветным градиентом
LinearGradientBrush::GetInterpolationColors