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


Метод PathGradientBrush::GetFocusScales (gdipluspath.h)

Метод PathGradientBrush::GetFocusScales получает масштабы фокуса этой кисти градиента пути.

Синтаксис

Status GetFocusScales(
  [out] REAL *xScale,
  [out] REAL *yScale
);

Параметры

[out] xScale

Тип: REAL*

Указатель на REAL , получающий значение шкалы x фокуса.

[out] yScale

Тип: REAL*

Указатель на REAL , получающий значение шкалы фокуса Y.

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

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

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

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

Комментарии

По умолчанию центральный цвет градиента пути находится в центральной точке. Вызвав PathGradientBrush::SetFocusScales, можно указать, что центральный цвет должен отображаться вдоль пути, окружающего центральную точку. Например, предположим, что путь границы является треугольником, а центральная точка находится в центроиде этого треугольника. Также предположим, что цвет границы — красный, а центральный цвет — синий. Если для шкалы фокуса задано значение (0,2, 0,2), цвет будет синим вдоль границы небольшого треугольника, окружающего центральную точку. Этот маленький треугольник представляет собой main путь границы, масштабируемый на 0,2 в направлении x и 0,2 в направлении y. При рисовании с помощью кисти градиента пути цвет будет постепенно меняться с красного на синий по мере перехода от границы большого треугольника к границе маленького треугольника. Область внутри маленького треугольника будет заполнена синим цветом.

Примеры

В следующем примере создается объект PathGradientBrush на основе треугольного пути. Код задает масштабы фокуса кисти градиента пути (0,2, 0,2), а затем использует кисть градиента пути для заполнения области, содержащей треугольный путь. Наконец, код вызывает метод PathGradientBrush::GetFocusScales объекта PathGradientBrush для получения значений шкалы фокуса x и y.

VOID Example_GetFocusScales(HDC hdc)
{
   Graphics graphics(hdc);

   Point points[] = {Point(100, 0), Point(200, 200), Point(0, 200)};

   // No GraphicsPath object is created. The PathGradientBrush
   // object is constructed directly from the array of points.
   PathGradientBrush pthGrBrush(points, 3);

   Color colors[] = {
      Color(255, 255, 0, 0),    // red
      Color(255, 0, 0, 255)};   // blue

   REAL relativePositions[] = {
      0.0f,    // red at the boundary of the outer triangle
      1.0f};   // blue at the boundary of the inner triangle

   pthGrBrush.SetInterpolationColors(colors, relativePositions, 2);

   // The inner triangle is formed by scaling the outer triangle
   // about its centroid. The scaling factor is 0.2 in both
   // the x and y directions.
   pthGrBrush.SetFocusScales(0.2f, 0.2f);

   // Fill a rectangle that is larger than the triangle
   // specified in the Point array. The portion of the
   // rectangle outside the triangle will not be painted.
   graphics.FillRectangle(&pthGrBrush, 0, 0, 200, 200);

   // Obtain information about the path gradient brush.
   REAL xScale = 0.0f;
   REAL yScale = 0.0f;
   pthGrBrush.GetFocusScales(&xScale, &yScale);

   // The value of xScale is now 0.2.
   // The value of yScale is now 0.2. 
}

Требования

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

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

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

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

GraphicsPath

PathGradientBrush

PathGradientBrush::SetFocusScales