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


Метод 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;

LinearGradientBrush::GetInterpolationColors

LinearGradientBrush::SetInterpolationColors

PathGradientBrush

Rect

SolidBrush