Browse Source

Bug fix: maintain origin matrix after drawing the Canvas element

MarcinZiabek 4 years ago
parent
commit
25b690fcca
2 changed files with 17 additions and 1 deletions
  1. 13 0
      QuestPDF.Examples/ElementExamples.cs
  2. 4 1
      QuestPDF/Elements/Canvas.cs

+ 13 - 0
QuestPDF.Examples/ElementExamples.cs

@@ -2,6 +2,7 @@ using QuestPDF.Examples.Engine;
 using QuestPDF.Fluent;
 using QuestPDF.Fluent;
 using QuestPDF.Helpers;
 using QuestPDF.Helpers;
 using QuestPDF.Infrastructure;
 using QuestPDF.Infrastructure;
+using SkiaSharp;
 
 
 namespace QuestPDF.Examples
 namespace QuestPDF.Examples
 {
 {
@@ -207,6 +208,18 @@ namespace QuestPDF.Examples
                         stack.Element().PaddingTop(40).Text("Dupa 2");
                         stack.Element().PaddingTop(40).Text("Dupa 2");
                     });
                     });
                     
                     
+                    layers.Layer().Canvas((canvas, size) =>
+                    {
+                        using var paint = new SKPaint
+                        {
+                            Color = SKColors.Red,
+                            StrokeWidth = 5
+                        };
+                        
+                        canvas.Translate(size.Width / 2, size.Height / 2);
+                        canvas.DrawCircle(0, 0, 50, paint);
+                    });
+                    
                     layers.Layer().Background("#8F00").Extend();
                     layers.Layer().Background("#8F00").Extend();
                     layers.Layer().PaddingTop(40).Text("Super", TextStyle.Default.Size(24));
                     layers.Layer().PaddingTop(40).Text("Super", TextStyle.Default.Size(24));
                 });
                 });

+ 4 - 1
QuestPDF/Elements/Canvas.cs

@@ -1,5 +1,6 @@
 using System;
 using System;
 using QuestPDF.Drawing.SpacePlan;
 using QuestPDF.Drawing.SpacePlan;
+using QuestPDF.Helpers;
 using QuestPDF.Infrastructure;
 using QuestPDF.Infrastructure;
 using SkiaSharp;
 using SkiaSharp;
 
 
@@ -22,8 +23,10 @@ namespace QuestPDF.Elements
             
             
             if (Handler == null || skiaCanvas == null)
             if (Handler == null || skiaCanvas == null)
                 return;
                 return;
-            
+
+            var currentMatrix = skiaCanvas.TotalMatrix;
             Handler.Invoke(skiaCanvas, availableSpace);
             Handler.Invoke(skiaCanvas, availableSpace);
+            skiaCanvas.SetMatrix(currentMatrix);
         }
         }
     }
     }
 }
 }