Trabajar con texturas en PostScript | .NETO
Agregar patrón de mosaico de textura en documento PS
Un patrón de mosaico de textura es una imagen que se utiliza para rellenar o dibujar objetos: formas o texto. Si el tamaño de la imagen es menor que el tamaño del objeto, se repite en las direcciones X e Y para cubrir todas las áreas necesarias.
El proceso de repetición de una imagen dentro de objetos gráficos se llama mosaico. Para configurar la pintura o el trazo en PsDocument debemos pasar un objeto de la clase System.Drawing.Brush para una pintura y un objeto de System.Drawing.Pen para los trazos respectivos. métodos.
La biblioteca Aspose.Page para .NET procesa todas las subclases de System.Drawing.Brush que ofrece la plataforma .NET. Estos son System.Drawing.SolidBrush, System.Drawing.TextureBrush, System.Drawing.LinearGradientBrush, System.Drawing.PathGradientBrush y *System.Drawing.HatchBrush *. La clase System.Drawing.Pen no se puede ampliar porque está sellada, pero contiene System.Drawing.Brush como propiedad y, por lo tanto, la biblioteca Aspose.Page para .NET también puede usar un conjunto completo de pinceles también para dibujar líneas y delinear formas y texto.
Para pintar objetos gráficos con un patrón texturizado en la biblioteca Aspose.Page para .NET, basta simplemente con pasar System.Drawing.TextureBrush a SetPaint() o uno de los FillText () o FillAndStrokeText() métodos que aceptan System.Drawing.Brush como parámetro.
Para delinear objetos gráficos con un patrón texturizado en Aspose.Page para la biblioteca .NET, debe crear un nuevo System.Drawing.Pen con System.Drawing.TextureBrush y pasarlo a SetStroke () o uno de los métodos OutlineText() o FillAndStrokeText() que acepta System.Drawing.Pen como parámetro.
En el siguiente ejemplo, demostramos cómo rellenar una forma y un texto y delinear un texto con un patrón de mosaico de textura.
Descripción de los pasos para trabajar con Patrón de textura y PsDocument en el ejemplo:
- Cree una secuencia de salida para el archivo PS resultante.
- Cree el objeto PsSaveOptions con opciones predeterminadas.
- Cree un PsDocument de 1 página con un flujo de salida ya creado y opciones para guardar.
- Cree un nuevo estado de gráficos y transfiéralo a la posición necesaria.
- Cree System.Drawing.Bitmap a partir del archivo de imagen.
- Cree System.Drawing.TextureBrush a partir de la imagen.
- Establece la transformación necesaria en el pincel de textura.
- Configure el pincel de textura como pintura actual en el estado gráfico actual de PsDocument.
- Crea un camino rectangular.
- Rellena el rectángulo con el pincel de textura.
- Guarde la pintura actual como una variable local para uso futuro.
- Establezca el trazo actual con un bolígrafo rojo.
- Delinea el rectángulo con un bolígrafo actual.
- Salga del estado de gráficos actual al estado de gráficos de nivel superior.
- Cree la fuente sistema.
- Rellene y trace (delinee) el texto. Para rellenar se utiliza el pincel de textura y para trazar se utiliza un bolígrafo negro.
- Delinea el texto en la otra posición con el nuevo System.Drawing.Pen creado con el pincel de textura como Pincel.
- Cierra la página.
- Guarde el documento.
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}
Para Linux, MacOS y otros sistemas operativos distintos de Windows, ofrecemos utilizar nuestro paquete Nuget Aspose.Page.Drawing. Utiliza el backend Aspose.Drawing en lugar de la biblioteca del sistema System.Drawing. Así que importe el espacio de nombres Aspose.Page.Drawing en lugar de System.Drawing. En el fragmento de código anterior, se usará Aspose.Page.Drawing.RectangleF en lugar de System.Drawing.RectangleF, se usará Aspose.Page.Drawing.Drawing2D.GraphicsPath en lugar de System.Drawing.Drawing2D.GraphicsPath, etc. Nuestros ejemplos de código en GitHub contienen todas las sustituciones necesarias.
Vea cómo trabajar con texturas en documentos PS en Java.
El resultado de ejecutar este código aparece como
Puede descargar ejemplos y archivos de datos desde GitHub.