Работа с текстурами в 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 //Create an output stream for PostScript document
2using (Stream outPsStream = new FileStream(dataDir + "AddTextureTilingPattern_outPS.ps", FileMode.Create))
3{
4 //Create save options with A4 size
5 PsSaveOptions options = new PsSaveOptions();
6
7 // Create new 1-paged PS Document
8 PsDocument document = new PsDocument(outPsStream, options, false);
9
10
11 document.WriteGraphicsSave();
12 document.Translate(200, 100);
13
14 //Create a Bitmap object from image file
15 using (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 a rectangle path
29 GraphicsPath path = new GraphicsPath();
30 path.AddRectangle(new RectangleF(0, 0, 200, 100));
31
32 //Fill the rectangle
33 document.Fill(path);
34
35 //Get current paint
36 Brush paint = document.GetPaint();
37
38 //Set red stroke
39 document.SetStroke(new Pen(new SolidBrush(Color.Red), 2));
40 //Stroke the rectangle
41 document.Draw(path);
42
43 document.WriteGraphicsRestore();
44
45 //Fill the text with the texture pattern
46 Font font = new Font("Arial", 96, FontStyle.Bold);
47 document.FillAndStrokeText("ABC", font, 200, 300, paint, new Pen(Color.Black, 2));
48
49 //Outline the text with the texture pattern
50 document.OutlineText("ABC", font, 200, 400, new Pen(paint, 5));
51
52 //Close current page
53 document.ClosePage();
54
55 //Save the document
56 document.Save();
57}
Для 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.