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


Новые возможности

В следующих разделах описано несколько новых функций в Windows GDI+.

Градиентные кисти

GDI+ расширяет интерфейс графических устройств Windows (GDI), предоставляя линейные градиентные и градиентные кисти пути для заполнения фигур, путей и регионов. Градиентные кисти также можно использовать для рисования линий, кривых и путей. При заполнении фигуры линейной градиентной кистью цвет постепенно изменяется при перемещении по фигуре. Например, предположим, что вы создаете горизонтальную градиентную кисть, указав синий по левому краю фигуры и зеленый на правом краю. Когда вы заполняете эту фигуру горизонтальной градиентной кистью, она постепенно изменится с синего на зеленый по мере перехода от левого края к правому краю. Аналогичным образом, фигура, заполненная вертикальной градиентной кистью, изменит цвет при переходе с верхней до нижней. На следующем рисунке показан многоточие, заполненное горизонтальной градиентной кистью и областью, заполненной диагональной кистью градиента.

иллюстрация фигуры, заполненной горизонтальным градиентом и одной поданным диагональным градиентом

При заполнении фигуры градиентной кистью пути вы можете указать, как цвета изменяются при переходе из одной части фигуры в другую. Один из вариантов заключается в наличии центрального цвета и цвета границ, чтобы пиксели постепенно изменялись от одного цвета к другому при переходе от середины фигуры к внешним краям. На следующем рисунке показан путь (созданный из пары линий splines Bézier), заполненный градиентной кистью пути.

иллюстрация фигуры, похожей на знак бесконечности, заполненный синим цветом, где половины встречаются с водой на краях

Кардиналы с splines

GDI+ поддерживает кардинальные сплайны, которые не поддерживаются в GDI. Кардинал сплайн — это последовательность отдельных кривых, присоединенных к форме более крупной кривой. Строка сплайна определяется массивом точек и проходит через каждую точку в этом массиве. Кардиналовая линия сплайн проходит гладко (без острых углов) через каждую точку массива и, следовательно, более тонко, чем путь, созданный путем соединения прямых линий. На следующем рисунке показаны два пути, созданные путем подключения прямых линий и одного из них, созданного в качестве кратной сплайна.

иллюстрация, показывающая один и тот же пять точек дважды: после подключения к кратному сплайну, другая по сегментам линий

Независимые объекты пути

В GDI путь принадлежит контексту устройства, а путь уничтожается по мере рисования. С помощью GDI+рисование выполняется объектомграфики, и вы можете создавать и поддерживать несколько объектов GraphicsPath, которые отделены от объекта графики. Объект GraphicsPath не уничтожается действием рисования, поэтому для рисования пути можно использовать один и тот же объект GraphicsPath.

Преобразования и объект Matrix

GDI+ предоставляет объект Matrix, мощный инструмент, который делает преобразования (повороты, переводы и т. д.) простым и гибким. Объект матрицы работает вместе с объектами, которые преобразуются. Например, объект GraphicsPath имеет метод GraphicsPath::Transform, который получает адрес объекта Matrix в качестве аргумента. Одна матрица 3×3 может хранить одно преобразование или последовательность преобразований. На следующем рисунке показан путь до и после последовательности двух преобразований (первый масштаб, а затем поворот).

иллюстрации, показывающую контур фигуры, а затем ту же структуру, но сужающуюся и вращающуюся

Масштабируемые регионы

GDI+ значительно расширяет GDI с поддержкой регионов. В GDI регионы хранятся в координатах устройства, а единственное преобразование, которое можно применить к региону, — это перевод. GDI+ хранит регионы в координатах мира и позволяет региону проходить любое преобразование (например, масштабирование), которое может храниться в матрице преобразования. На следующем рисунке показан регион до и после последовательности трех преобразований: масштабирование, поворот и перевод.

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

Альфа-смешивание

Обратите внимание, что на предыдущем рисунке можно увидеть нетрансформированную область (заполненную красным цветом) через преобразованную область (заполненную кистью хэтча). Это возможно с помощью альфа-смешивания, которое поддерживается GDI+. С помощью альфа-смешивания можно указать прозрачность цвета заливки. Прозрачный цвет смешивается с цветом фона — тем более прозрачным, чем цвет заливки, тем больше фон отображается. На следующем рисунке показаны четыре многоточия, заполненные одинаковым цветом (красным) на разных уровнях прозрачности.

иллюстрации с четырьмя многоточиями разной прозрачности, перекрывающей полупрозрачный прямоугольник

Поддержка нескольких форматов изображений

GDI+ предоставляет классы изображения, растрового изображенияи классы метафайла, которые позволяют загружать, сохранять и управлять изображениями в различных форматах. Поддерживаются следующие форматы:

  • BMP
  • Формат обмена графикой (GIF)
  • JPEG
  • Эксиф
  • PNG
  • РАЗМОЛВКА
  • ИКОНА
  • WMF
  • ЭДС