예제 #1
0
        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();
        }
예제 #2
0
        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();
        }