diff --git a/src/UglyToad.PdfPig.Tests/Writer/PdfDocumentBuilderTests.cs b/src/UglyToad.PdfPig.Tests/Writer/PdfDocumentBuilderTests.cs index 8dc9cb89..adcc1112 100644 --- a/src/UglyToad.PdfPig.Tests/Writer/PdfDocumentBuilderTests.cs +++ b/src/UglyToad.PdfPig.Tests/Writer/PdfDocumentBuilderTests.cs @@ -588,6 +588,21 @@ } } + [Fact] + public void CanCreateDocumentWithFilledRectangle() + { + var builder = new PdfDocumentBuilder(); + var page = builder.AddPage(PageSize.A4); + + page.SetTextAndFillColor(255, 0, 0); + page.SetStrokeColor(0, 0, 255); + + page.DrawRectangle(new PdfPoint(20, 100), 200, 100, 1.5m, true); + + var file = builder.Build(); + WriteFile(nameof(CanCreateDocumentWithFilledRectangle), file); + } + private static void WriteFile(string name, byte[] bytes, string extension = "pdf") { try diff --git a/src/UglyToad.PdfPig/Writer/PdfPageBuilder.cs b/src/UglyToad.PdfPig/Writer/PdfPageBuilder.cs index 669ac2b2..d1680c39 100644 --- a/src/UglyToad.PdfPig/Writer/PdfPageBuilder.cs +++ b/src/UglyToad.PdfPig/Writer/PdfPageBuilder.cs @@ -91,7 +91,8 @@ /// The width of the rectangle. /// The height of the rectangle. /// The width of the line border of the rectangle. - public void DrawRectangle(PdfPoint position, decimal width, decimal height, decimal lineWidth = 1) + /// Whether to fill with the color set by . + public void DrawRectangle(PdfPoint position, decimal width, decimal height, decimal lineWidth = 1, bool fill = false) { if (lineWidth != 1) { @@ -99,7 +100,15 @@ } operations.Add(new AppendRectangle((decimal)position.X, (decimal)position.Y, width, height)); - operations.Add(StrokePath.Value); + + if (fill) + { + operations.Add(FillPathEvenOddRuleAndStroke.Value); + } + else + { + operations.Add(StrokePath.Value); + } if (lineWidth != 1) {