Работа с текстурами в PostScript | .NET
Добавить образец мозаики текстуры в документ PS
Узор текстурной мозаики — это изображение, которое используется для заливки или рисования объектов: фигур или текста. Если размер изображения меньше размера объекта, оно повторяется в направлениях X и Y для покрытия всех необходимых областей.
Процесс повторения изображения внутри графических объектов называется тайлингом. Чтобы установить рисование или обводку в PsDocument, мы должны передать объект класса System.Drawing.Brush для рисования и объект System.Drawing.Pen для обводки в соответствующие методы.
Библиотека Aspose.Page для .NET обрабатывает все подклассы System.Drawing.Brush, предлагаемые платформой .NET. Это System.Drawing.SolidBrush, System.Drawing.TextureBrush, System.Drawing.LinearGradientBrush, System.Drawing.PathGradientBrush и System.Drawing.HatchBrush. Класс System.Drawing.Pen не может быть расширен, поскольку он запечатан, но он содержит System.Drawing.Brush в качестве свойства и, таким образом, библиотека Aspose.Page для .NET также может использовать полный набор. кистей также для рисования линий и обрисовки фигур и текста.
Чтобы рисовать графические объекты с текстурированным узором в библиотеке Aspose.Page для .NET, достаточно просто передать System.Drawing.TextureBrush в SetPaint() или один из FillText () или FillAndStrokeText(), которые принимают System.Drawing.Brush в качестве параметра.
Чтобы обвести графические объекты текстурированным узором в библиотеке Aspose.Page для .NET, вам необходимо создать новый System.Drawing.Pen с помощью System.Drawing.TextureBrush и передать его в SetStroke. () или один из методов OutlineText() или FillAndStrokeText(), который принимает System.Drawing.Pen в качестве параметра.
В приведенном ниже примере мы демонстрируем, как заполнить фигуру и текст, а также обвести текст узором мозаики текстуры.
Описание шагов работы с Pattern Pattern и PsDocument в примере:
- Создайте выходной поток для полученного PS-файла.
- Создайте объект PsSaveOptions с параметрами по умолчанию.
- Создайте одностраничный PsDocument с уже созданным потоком вывода и сохраните параметры.
- Создайте новое графическое состояние и переведите его в необходимое положение.
- Создайте System.Drawing.Bitmap из файла изображения.
- Создайте System.Drawing.TextureBrush из изображения.
- Установите необходимое преобразование текстурной кисти.
- Установите текстурную кисть в качестве текущей краски в текущем графическом состоянии PsDocument.
- Создайте прямоугольный путь.
- Заполните прямоугольник текстурной кистью.
- Сохраните текущую отрисовку как локальную переменную для использования в будущем.
- Задайте текущий штрих красной ручкой.
- Обведите прямоугольник текущим пером.
- Выход из текущего состояния графики в состояние графики верхнего уровня.
- Создайте системный шрифт.
- Заполните и обведите (обведите) текст. Для заливки текстуры используется кисть, а для обводки — черная ручка.
- Обведите текст в другой позиции с помощью нового System.Drawing.Pen, созданного с помощью текстурной кисти в качестве Brush.
- Закройте страницу.
- Сохраните документ.
1// Paint rectangle and text and outline text with tiled image (texture pattern) in PS document.
2
3string outputFileName = "AddTextureTilingPattern_outPS.ps";
4
5//Create save options with A4 size
6PsSaveOptions options = new PsSaveOptions();
7
8// Create new 1-paged PS Document
9PsDocument document = new PsDocument(OutputDir + outputFileName, options, false);
10
11document.WriteGraphicsSave();
12document.Translate(200, 100);
13
14//Create a Bitmap object from image file
15using (Bitmap image = new Bitmap(DataDir + "TestTexture.bmp"))
16{
17 //Create texture brush from the image
18 TextureBrush brush = new TextureBrush(image, WrapMode.Tile);
19
20 //Add scaling in X direction to the mattern
21 Matrix transform = new Matrix(2, 0, 0, 1, 0, 0);
22 brush.Transform = transform;
23
24 //Set this texture brush as current paint
25 document.SetPaint(brush);
26}
27
28//Create rectangle path
29GraphicsPath path = new GraphicsPath();
30path.AddRectangle(new RectangleF(0, 0, 200, 100));
31
32//Fill rectangle
33document.Fill(path);
34
35//Get current paint
36Brush paint = document.GetPaint();
37
38//Set red stroke
39document.SetStroke(new Pen(new SolidBrush(Color.Red), 2));
40//Stroke the rectangle
41document.Draw(path);
42
43document.WriteGraphicsRestore();
44
45//Fill text with texture pattern
46System.Drawing.Font font = new System.Drawing.Font("Arial", 96, FontStyle.Bold);
47document.FillAndStrokeText("ABC", font, 200, 300, paint, new Pen(Color.Black, 2));
48
49//Outline text with texture pattern
50document.OutlineText("ABC", font, 200, 400, new Pen(paint, 5));
51
52//Close current page
53document.ClosePage();
54
55//Save the document
56document.Save();Для Linux, MacOS и других операционных систем, отличных от Windows, мы предлагаем использовать наш пакет Nuget Aspose.Page.Drawing. Он использует серверную часть Aspose.Drawing вместо системной библиотеки System.Drawing.
Поэтому импортируйте пространство имен Aspose.Page.Drawing вместо System.Drawing. В приведенном выше фрагменте кода вместо System.Drawing.RectangleF будет использоваться Aspose.Page.Drawing.RectangleF, вместо System.Drawing.Drawing2D.GraphicsPath будет использоваться Aspose.Page.Drawing.Drawing2D.GraphicsPath и так далее. Наши примеры кода на GitHub содержат все необходимые замены.
См. работу с текстурами в документах PS в Java.
Результат запуска этого кода выглядит так:

Вы можете загрузить примеры и файлы данных с сайта GitHub.