Робота з текстурами в 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 як параметр.
У наведеному нижче прикладі ми демонструємо, як заповнити фігуру та текст, а також окреслити текст шаблоном плитки текстури.
Опис кроків роботи з Texture Pattern і PsDocument у прикладі:
- Створіть вихідний потік для отриманого файлу PS.
- Створіть об’єкт PsSaveOptions із параметрами за замовчуванням.
- Створіть 1-сторінковий 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. У наведеному вище фрагменті коду Aspose.Page.Drawing.RectangleF використовуватиметься замість System.Drawing.RectangleF, Aspose.Page.Drawing.Drawing2D.GraphicsPath використовуватиметься замість System.Drawing.Drawing2D.GraphicsPath тощо. Наші приклади коду на GitHub містять усі необхідні заміни.
Дивіться роботу з текстурами в документах PS у Java.
Результат виконання цього коду виглядає як

Ви можете завантажити приклади і файли даних з GitHub.