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


Метод LinearGradientBrush::GetBlend (gdiplusbrush.h)

Метод LinearGradientBrush::GetBlend получает коэффициенты наложения и их соответствующие позиции из объекта LinearGradientBrush .

Синтаксис

Status GetBlend(
  [out] REAL *blendFactors,
  [out] REAL *blendPositions,
  [in]  INT  count
);

Параметры

[out] blendFactors

Тип: REAL*

Указатель на массив, который получает коэффициенты смешения. Каждое число в массиве указывает процент конечного цвета и находится в диапазоне от 0,0 до 1,0.

[out] blendPositions

Тип: REAL*

Указатель на массив, который получает позиции наложения. Каждое число в массиве указывает процент расстояния между начальной и конечной границей и находится в диапазоне от 0,0 до 1,0, где 0,0 обозначает начальную границу градиента, а 1,0 — конечную границу. Позиция смешения между 0,0 и 1,0 обозначает линию, параллельную линиям границы, то есть определенную долю расстояния от начальной границы до конечной границы. Например, позиция смешения 0,7 обозначает линию, которая составляет 70 процентов от начальной границы до конечной границы. Цвет является постоянным для линий, параллельных линиям границы.

[in] count

Тип: INT

Целое число, указывающее количество извлекаемых коэффициентов смешения. Перед вызовом метода LinearGradientBrush::GetBlend объекта LinearGradientBrush вызовите метод LinearGradientBrush::GetBlendCount того же объекта LinearGradientBrush , чтобы определить текущее количество коэффициентов смешения. Количество полученных позиций смешения совпадает с количеством полученных коэффициентов смешения.

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

Тип: Состояние

В случае успешного выполнения метода возвращается ОК, который является элементом перечисления Status .

Если метод завершается ошибкой, он возвращает один из других элементов перечисления Status .

Комментарии

Объект LinearGradientBrush имеет две параллельные границы: начальную и конечную. Цвет связан с каждой из этих двух границ. Каждая граница представляет собой прямую линию, которая проходит через указанную точку— начальная граница проходит через начальную точку; конечная граница проходит через конечную точку и перпендикулярна направлению линейной кисти градиента. Направление линейной кисти градиента следует за линией, определенной начальной и конечной точками. Эта линия, "направленная линия", может быть горизонтальной, вертикальной или диагональной. Все точки, лежащие на линии, параллельной границам, имеют одинаковый цвет. При заполнении области линейной кистью градиента цвет постепенно меняется от одной линии к другой по мере перемещения вдоль направленной линии от начальной границы к конечной. По умолчанию изменение цвета пропорционально изменению расстояния; т. е. линия в 30 процентов расстояния между начальной и конечной границами имеет цвет, который составляет 30 процентов от расстояния между цветом начальной границы и цветом конечной границы. Цветовой узор повторяется за пределами начальной и конечной границ.

Вы можете вызвать метод LinearGradientBrush::SetBlend объекта LinearGradientBrush , чтобы настроить связь между цветом и расстоянием. Например, предположим, что вы установили для позиций наложения {0, 0,5, 1}, а коэффициенты смешения — {0, 0,3, 1}. Затем линия в 50 процентов расстояния между начальной и конечной границами будет иметь цвет, который составляет 30 процентов от расстояния между цветом начальной границы и цветом конечной границы.

Примеры

В следующем примере создается линейная градиентная кисть, устанавливается ее наложение и используется кисть для заполнения прямоугольника. Затем код получает смесь. Затем коэффициенты и позиции смешения можно проверить или каким-либо образом использовать.

VOID Example_GetBlend(HDC hdc)
{
   Graphics myGraphics(hdc);

   // Create a linear gradient brush, and set its blend.
   REAL fac[] = {0.0f, 0.4f, 0.6f, 1.0f};
   REAL pos[] = {0.0f, 0.2f, 0.8f, 1.0f};

   LinearGradientBrush linGrBrush(
      Point(0, 0), 
      Point(100, 0),
      Color(255, 255, 0, 0),   // red
      Color(255, 0, 0, 255));  // blue

   linGrBrush.SetBlend(fac, pos, 4);

   // Use the linear gradient brush to fill a rectangle.
   myGraphics.FillRectangle(&linGrBrush, 0, 0, 100, 50);

   // Obtain information about the linear gradient brush.
   INT   blendCount;
   REAL* factors = NULL;
   REAL* positions = NULL;

   blendCount = linGrBrush.GetBlendCount();
   factors = new REAL[blendCount];
   positions = new REAL[blendCount];

   linGrBrush.GetBlend(factors, positions, blendCount);

   for(INT j = 0; j < blendCount; ++j)
   {
      // Inspect or use the value in factors[j].
      // Inspect or use the value in positions[j].
   }
}

Требования

   
Минимальная версия клиента Windows XP, Windows 2000 Профессиональная [только классические приложения]
Минимальная версия сервера Windows 2000 Server [только классические приложения]
Целевая платформа Windows
Header gdiplusbrush.h (включая Gdiplus.h)
Библиотека Gdiplus.lib
DLL Gdiplus.dll

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

Кисти и закрашенные фигуры

Заполнение фигур градиентной кистью

Заполнение фигуры цветным градиентом

LinearGradientBrush;

LinearGradientBrush::GetBlendCount

LinearGradientBrush::SetBlend

Point