Отрисовка изображений с помощью 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 для гарантии правильного их удаления.