Отрисовка изображений с помощью GraphicsPath

Отрисовка изображений с помощью GraphicsPath

Класс GraphicsPath отвечает за создание и поддержку графического пути. GraphicsPath не имеет ссылки на изображение и не изменяет само изображение, вместо этого его можно рассматривать как объект, содержащий метаданные, описывающие пути, которые может нарисовать класс Graphics. Класс GraphicsPath использует фигуры; каждая фигура состоит либо из последовательности соединенных линий и кривых, либо из примитивов геометрических фигур. Каждую фигуру можно разделить на сегменты фигуры. Вы можете добавлять, удалять и изменять различные фигуры или формы в объекте GraphicsPath. Когда GraphicsPath был полностью описан, используйте соответствующие методы класса Graphics (DrawPath и Fill Paths) для отрисовки или заливки путей. Класс Graphics берет каждый сегмент формы и рисует его, чтобы создать конечное изображение.

Отрисовка с использованием класса GraphicsPath

Ниже приведен пример, демонстрирующий использование класса GraphicsPath. Исходный код примера разделен на несколько частей, чтобы сделать его простым и понятным для следования. Шаг за шагом примеры показывают вам, как:

  • Создавать изображение.
  • Инициализировать объект Graphics.
  • Очистить поверхность.
  • Создать экземпляр GraphicsPath.
  • Создать фигуру.
  • Добавить формы в фигуру.
  • Создать массив фигур.
  • Рисовать пути.
  • Заливать пути.

Отрисовка изображений с использованием GraphicsPath: Программные примеры

GraphicsPath: Создать изображение

Начните с создания изображения, используя любой из методов, описанных в разделе Создание файлов.

GraphicsPath: Инициализировать объект Graphics

Создайте и инициализируйте объект Graphics, передав объект Image в его конструктор.

GraphicsPath: Очистить поверхность

Очистите графическую поверхность, вызвав метод Clear класса Graphics и передайте Color как параметр. Этот метод заполняет графическую поверхность переданным в качестве аргумента цветом.

GraphicsPath: Создание экземпляра GraphicsPath

Создайте экземпляр GraphicsPath с GraphicsPath, установленным по умолчанию на Alternate. Этот режим определяет, как заполнять внутренний контур закрытой фигуры. Возможное значение GraphicsPath - Winding.

GraphicsPath: Создать фигуру

Создайте экземпляр класса Figure. Как уже обсуждалось, Figure может содержать Shapes, а shapes находятся в пространстве имен Aspose.PSD.Shapes.

GraphicsPath: Добавить формы в фигуру

Метод Add Shapes, предоставленный классом Figure, позволяет добавлять формы в фигуру. В приведенных ниже кодах добавляются несколько форм в объект Figure.

GraphicsPath: Добавить фигуры в массив

Несколько фигур можно добавить в объект GraphicsPath с использованием метода AddFigures, предоставленного классом GraphicsPath. Этот метод принимает массив фигур в качестве параметра.

GraphicsPath: Нарисовать пути

Нарисуйте GraphicsPath с помощью метода DrawPath, предоставленного классом Graphics. Метод принимает два параметра. Первый параметр - объект класса Pen, который определяет цвет, ширину и стиль пути. Второй параметр - объект класса GraphicsPath, представляющий сам путь.

GraphicsPath: Залить пути

Вы можете залить путь, передав объект GraphicsPath в метод Fill Paths, предоставленный классом Graphics. Метод Fill Paths заполняет путь в соответствии с режимом заливки (альтернативный или построение), в данный момент установленным для пути. Если у пути есть открытые фигуры, путь будет заполнен так, как если бы эти фигуры были закрыты.

Метод Fill Paths принимает два параметра. Первый параметр - объект любого класса кистей из пространства имен Aspose.PSD.Brushes. Второй параметр - сам путь. Для данного примера используйте HatchBrush, который является прямоугольной кистью с узором, цветом переднего плана и цветом фона. Прежде чем передать объект HatchBrush в метод Fill Paths, установите его свойства.

GraphicsPath: Полный исходный код

String dataDir = Utils.getDataDir(DrawingUsingGraphicsPath.class) + "DrawingImages/";
// Create an instance of Image and initialize an instance of Graphics
try (PsdImage image = new PsdImage(500, 500)) {
// create graphics surface.
Graphics graphics = new Graphics(image);
graphics.clear(Color.getWhite());
// Create an instance of GraphicsPath and Instance of Figure, add EllipseShape, RectangleShape and TextShape to the figure
GraphicsPath graphicspath = new GraphicsPath();
Figure figure = new Figure();
figure.addShape(new EllipseShape(new RectangleF(0, 0, 499, 499)));
figure.addShape(new RectangleShape(new RectangleF(0, 0, 499, 499)));
figure.addShape(new TextShape("Aspose.PSD", new RectangleF(170, 225, 170, 100), new Font("Arial", 20), StringFormat.getGenericTypographic()));
Figure[] fig = {figure};
graphicspath.addFigures(fig);
graphics.drawPath(new Pen(Color.getBlue()), graphicspath);
// Create an instance of HatchBrush and set its properties also Fill path by supplying the brush and GraphicsPath objects
HatchBrush hatchbrush = new HatchBrush();
hatchbrush.setBackgroundColor(Color.getBrown());
hatchbrush.setForegroundColor(Color.getBlue());
hatchbrush.setHatchStyle(HatchStyle.Vertical);
graphics.fillPath(hatchbrush, graphicspath);
image.save(dataDir + "DrawingUsingGraphicsPath_output.psd");
}

Все классы, реализующие IDisposable, инициализируются в операторе Using для гарантии правильного их удаления.