private static void DrawPatterns(PDFPage page, PDFFont titleFont, PDFFont sectionFont) { PDFBrush brush = new PDFBrush(); PDFPen blackPen = new PDFPen(PDFRgbColor.Black, 1); PDFPen darkRedPen = new PDFPen(new PDFRgbColor(0xFF, 0x40, 0x40), 0.8); PDFPen darkOrangePen = new PDFPen(new PDFRgbColor(0xA6, 0x4B, 0x00), 0.8); PDFPen darkCyanPen = new PDFPen(new PDFRgbColor(0x00, 0x63, 0x63), 0.8); PDFPen darkGreenPen = new PDFPen(new PDFRgbColor(0x00, 0x85, 0x00), 0.8); PDFBrush lightRedBrush = new PDFBrush(new PDFRgbColor(0xFF, 0x73, 0x73)); PDFBrush lightOrangeBrush = new PDFBrush(new PDFRgbColor(0xFF, 0x96, 0x40)); PDFBrush lightCyanBrush = new PDFBrush(new PDFRgbColor(0x33, 0xCC, 0xCC)); PDFBrush lightGreenBrush = new PDFBrush(new PDFRgbColor(0x67, 0xE6, 0x67)); page.Canvas.DrawString("Patterns", titleFont, brush, 20, 50); page.Canvas.DrawString("Colored patterns", sectionFont, brush, 25, 70); // Create the pattern visual appearance. PDFColoredTilingPattern ctp = new PDFColoredTilingPattern(20, 20); // Red circle ctp.Canvas.DrawEllipse(darkRedPen, lightRedBrush, 1, 1, 8, 8); // Cyan square ctp.Canvas.DrawRectangle(darkCyanPen, lightCyanBrush, 11, 1, 8, 8); // Green diamond PDFPath diamondPath = new PDFPath(); diamondPath.StartSubpath(1, 15); diamondPath.AddPolyLineTo(new PDFPoint[] { new PDFPoint(5, 11), new PDFPoint(9, 15), new PDFPoint(5, 19) }); diamondPath.CloseSubpath(); ctp.Canvas.DrawPath(darkGreenPen, lightGreenBrush, diamondPath); // Orange triangle PDFPath trianglePath = new PDFPath(); trianglePath.StartSubpath(11, 19); trianglePath.AddPolyLineTo(new PDFPoint[] { new PDFPoint(15, 11), new PDFPoint(19, 19) }); trianglePath.CloseSubpath(); ctp.Canvas.DrawPath(darkOrangePen, lightOrangeBrush, trianglePath); // Create a pattern colorspace from the pattern object. PDFPatternColorSpace coloredPatternColorSpace = new PDFPatternColorSpace(ctp); // Create a color based on the pattern colorspace. PDFPatternColor coloredPatternColor = new PDFPatternColor(coloredPatternColorSpace); // The pen and brush use the pattern color like any other color. PDFPatternBrush patternBrush = new PDFPatternBrush(coloredPatternColor); PDFPatternPen patternPen = new PDFPatternPen(coloredPatternColor, 40); page.Canvas.DrawEllipse(patternBrush, 25, 90, 250, 200); page.Canvas.DrawRoundRectangle(patternPen, 310, 110, 250, 160, 100, 100); page.Canvas.DrawString("Uncolored patterns", sectionFont, brush, 25, 300); // Create the pattern visual appearance. PDFUncoloredTilingPattern uctp = new PDFUncoloredTilingPattern(20, 20); // A pen without color is used to create the pattern content. PDFPen noColorPen = new PDFPen(null, 0.8); // Circle uctp.Canvas.DrawEllipse(noColorPen, 1, 1, 8, 8); // Square uctp.Canvas.DrawRectangle(noColorPen, 11, 1, 8, 8); // Diamond diamondPath = new PDFPath(); diamondPath.StartSubpath(1, 15); diamondPath.AddPolyLineTo(new PDFPoint[] { new PDFPoint(5, 11), new PDFPoint(9, 15), new PDFPoint(5, 19) }); diamondPath.CloseSubpath(); uctp.Canvas.DrawPath(noColorPen, diamondPath); // Triangle trianglePath = new PDFPath(); trianglePath.StartSubpath(11, 19); trianglePath.AddPolyLineTo(new PDFPoint[] { new PDFPoint(15, 11), new PDFPoint(19, 19) }); trianglePath.CloseSubpath(); uctp.Canvas.DrawPath(noColorPen, trianglePath); // Create a pattern colorspace from the pattern object. PDFPatternColorSpace uncoloredPatternColorSpace = new PDFPatternColorSpace(uctp); // Create a color based on the pattern colorspace. PDFPatternColor uncoloredPatternColor = new PDFPatternColor(uncoloredPatternColorSpace); // The pen and brush use the pattern color like any other color. patternBrush = new PDFPatternBrush(uncoloredPatternColor); // Before using the uncolored pattern set the color that will be used to paint the pattern. patternBrush.UncoloredPatternPaintColor = new PDFRgbColor(0xFF, 0x40, 0x40); page.Canvas.DrawEllipse(patternBrush, 25, 320, 125, 200); patternBrush.UncoloredPatternPaintColor = new PDFRgbColor(0xA6, 0x4B, 0x00); page.Canvas.DrawEllipse(patternBrush, 175, 320, 125, 200); patternBrush.UncoloredPatternPaintColor = new PDFRgbColor(0x00, 0x63, 0x63); page.Canvas.DrawEllipse(patternBrush, 325, 320, 125, 200); patternBrush.UncoloredPatternPaintColor = new PDFRgbColor(0x00, 0x85, 0x00); page.Canvas.DrawEllipse(patternBrush, 475, 320, 125, 200); page.Canvas.DrawString("Shading patterns", sectionFont, brush, 25, 550); // Create the pattern visual appearance. PDFAxialShading horizontalShading = new PDFAxialShading(); horizontalShading.StartColor = new PDFRgbColor(255, 0, 0); horizontalShading.EndColor = new PDFRgbColor(0, 0, 255); horizontalShading.StartPoint = new PDFPoint(25, 600); horizontalShading.EndPoint = new PDFPoint(575, 600); PDFShadingPattern sp = new PDFShadingPattern(horizontalShading); // Create a pattern colorspace from the pattern object. PDFPatternColorSpace shadingPatternColorSpace = new PDFPatternColorSpace(sp); // Create a color based on the pattern colorspace. PDFPatternColor shadingPatternColor = new PDFPatternColor(shadingPatternColorSpace); // The pen and brush use the pattern color like any other color. patternPen = new PDFPatternPen(shadingPatternColor, 40); page.Canvas.DrawEllipse(patternPen, 50, 600, 500, 150); page.Canvas.CompressAndClose(); }
private static void DrawShadings(PDFPage page, PDFFont titleFont, PDFFont sectionFont) { PDFBrush brush = new PDFBrush(); PDFPen blackPen = new PDFPen(PDFRgbColor.Black, 1); PDFRgbColor randomPenColor = new PDFRgbColor(); PDFPen randomPen = new PDFPen(randomPenColor, 1); PDFRgbColor randomBrushColor = new PDFRgbColor(); PDFBrush randomBrush = new PDFBrush(randomBrushColor); page.Canvas.DrawString("Shadings", titleFont, brush, 20, 50); page.Canvas.DrawString("Horizontal", sectionFont, brush, 25, 70); PDFAxialShading horizontalShading = new PDFAxialShading(); horizontalShading.StartColor = new PDFRgbColor(255, 0, 0); horizontalShading.EndColor = new PDFRgbColor(0, 0, 255); horizontalShading.StartPoint = new PDFPoint(25, 90); horizontalShading.EndPoint = new PDFPoint(175, 90); // Clip the shading to desired area. PDFPath hsArea = new PDFPath(); hsArea.AddRectangle(25, 90, 150, 150); page.Canvas.SaveGraphicsState(); page.Canvas.SetClip(hsArea); page.Canvas.DrawShading(horizontalShading); page.Canvas.RestoreGraphicsState(); page.Canvas.DrawString("Vertical", sectionFont, brush, 225, 70); PDFAxialShading verticalShading = new PDFAxialShading(); verticalShading.StartColor = new PDFRgbColor(255, 0, 0); verticalShading.EndColor = new PDFRgbColor(0, 0, 255); verticalShading.StartPoint = new PDFPoint(225, 90); verticalShading.EndPoint = new PDFPoint(225, 240); // Clip the shading to desired area. PDFPath vsArea = new PDFPath(); vsArea.AddRectangle(225, 90, 150, 150); page.Canvas.SaveGraphicsState(); page.Canvas.SetClip(vsArea); page.Canvas.DrawShading(verticalShading); page.Canvas.RestoreGraphicsState(); page.Canvas.DrawString("Diagonal", sectionFont, brush, 425, 70); PDFAxialShading diagonalShading = new PDFAxialShading(); diagonalShading.StartColor = new PDFRgbColor(255, 0, 0); diagonalShading.EndColor = new PDFRgbColor(0, 0, 255); diagonalShading.StartPoint = new PDFPoint(425, 90); diagonalShading.EndPoint = new PDFPoint(575, 240); // Clip the shading to desired area. PDFPath dsArea = new PDFPath(); dsArea.AddRectangle(425, 90, 150, 150); page.Canvas.SaveGraphicsState(); page.Canvas.SetClip(dsArea); page.Canvas.DrawShading(diagonalShading); page.Canvas.RestoreGraphicsState(); page.Canvas.DrawString("Extended shading", sectionFont, brush, 25, 260); PDFAxialShading extendedShading = new PDFAxialShading(); extendedShading.StartColor = new PDFRgbColor(255, 0, 0); extendedShading.EndColor = new PDFRgbColor(0, 0, 255); extendedShading.StartPoint = new PDFPoint(225, 280); extendedShading.EndPoint = new PDFPoint(375, 280); extendedShading.ExtendStart = true; extendedShading.ExtendEnd = true; // Clip the shading to desired area. PDFPath esArea = new PDFPath(); esArea.AddRectangle(25, 280, 550, 30); page.Canvas.SaveGraphicsState(); page.Canvas.SetClip(esArea); page.Canvas.DrawShading(extendedShading); page.Canvas.RestoreGraphicsState(); page.Canvas.DrawPath(blackPen, esArea); page.Canvas.DrawString("Limited shading", sectionFont, brush, 25, 330); PDFAxialShading limitedShading = new PDFAxialShading(); limitedShading.StartColor = new PDFRgbColor(255, 0, 0); limitedShading.EndColor = new PDFRgbColor(0, 0, 255); limitedShading.StartPoint = new PDFPoint(225, 350); limitedShading.EndPoint = new PDFPoint(375, 350); limitedShading.ExtendStart = false; limitedShading.ExtendEnd = false; // Clip the shading to desired area. PDFPath lsArea = new PDFPath(); lsArea.AddRectangle(25, 350, 550, 30); page.Canvas.SaveGraphicsState(); page.Canvas.SetClip(lsArea); page.Canvas.DrawShading(limitedShading); page.Canvas.RestoreGraphicsState(); page.Canvas.DrawPath(blackPen, lsArea); page.Canvas.DrawString("Multi-stop shading", sectionFont, brush, 25, 400); // Multi-stop shadings use a stitching function to combine the functions that define each gradient part. // Function for red to blue shading. PDFExponentialFunction redToBlueFunc = new PDFExponentialFunction(); // Linear function redToBlueFunc.Exponent = 1; redToBlueFunc.Domain = new double[] { 0, 1 }; // Red color for start redToBlueFunc.C0 = new double[] { 1, 0, 0 }; // Blue color for start redToBlueFunc.C1 = new double[] { 0, 0, 1 }; // Function for blue to green shading. PDFExponentialFunction blueToGreenFunc = new PDFExponentialFunction(); // Linear function blueToGreenFunc.Exponent = 1; blueToGreenFunc.Domain = new double[] { 0, 1 }; // Blue color for start blueToGreenFunc.C0 = new double[] { 0, 0, 1 }; // Green color for start blueToGreenFunc.C1 = new double[] { 0, 1, 0 }; //Stitching function for the shading. PDFStitchingFunction shadingFunction = new PDFStitchingFunction(); shadingFunction.Functions.Add(redToBlueFunc); shadingFunction.Functions.Add(blueToGreenFunc); shadingFunction.Domain = new double[] { 0, 1 }; shadingFunction.Encode = new double[] { 0, 1, 0, 1 }; // Entire shading goes from 0 to 1 (100%). // We set the first shading (red->blue) to cover 30% (0 - 0.3) and // the second shading to cover 70% (0.3 - 1). shadingFunction.Bounds = new double[] { 0.3 }; // The multistop shading PDFAxialShading multiStopShading = new PDFAxialShading(); multiStopShading.StartPoint = new PDFPoint(25, 420); multiStopShading.EndPoint = new PDFPoint(575, 420); // The colorspace must match the colors specified in C0 & C1 multiStopShading.ColorSpace = new PDFRgbColorSpace(); multiStopShading.Function = shadingFunction; // Clip the shading to desired area. PDFPath mssArea = new PDFPath(); mssArea.AddRectangle(25, 420, 550, 30); page.Canvas.SaveGraphicsState(); page.Canvas.SetClip(mssArea); page.Canvas.DrawShading(multiStopShading); page.Canvas.RestoreGraphicsState(); page.Canvas.DrawPath(blackPen, lsArea); page.Canvas.DrawString("Radial shading", sectionFont, brush, 25, 470); PDFRadialShading rs1 = new PDFRadialShading(); rs1.StartColor = new PDFRgbColor(0, 255, 0); rs1.EndColor = new PDFRgbColor(255, 0, 255); rs1.StartCircleCenter = new PDFPoint(50, 500); rs1.StartCircleRadius = 10; rs1.EndCircleCenter = new PDFPoint(500, 570); rs1.EndCircleRadius = 100; page.Canvas.DrawShading(rs1); PDFRadialShading rs2 = new PDFRadialShading(); rs2.StartColor = new PDFRgbColor(0, 255, 0); rs2.EndColor = new PDFRgbColor(255, 0, 255); rs2.StartCircleCenter = new PDFPoint(80, 600); rs2.StartCircleRadius = 10; rs2.EndCircleCenter = new PDFPoint(110, 690); rs2.EndCircleRadius = 100; page.Canvas.DrawShading(rs2); page.Canvas.CompressAndClose(); }