Browse Source

Merge pull request #6313 from wieslawsoltes/AddDrawingGroupMissingProperties

Add ClipGeometry and OpacityMask properties to DrawingGroup
Jumar Macato 4 years ago
parent
commit
a874df629a
1 changed files with 20 additions and 0 deletions
  1. 20 0
      src/Avalonia.Visuals/Media/DrawingGroup.cs

+ 20 - 0
src/Avalonia.Visuals/Media/DrawingGroup.cs

@@ -12,6 +12,12 @@ namespace Avalonia.Media
         public static readonly StyledProperty<Transform> TransformProperty =
             AvaloniaProperty.Register<DrawingGroup, Transform>(nameof(Transform));
 
+        public static readonly StyledProperty<Geometry> ClipGeometryProperty =
+            AvaloniaProperty.Register<DrawingGroup, Geometry>(nameof(ClipGeometry));
+
+        public static readonly StyledProperty<IBrush> OpacityMaskProperty =
+            AvaloniaProperty.Register<DrawingGroup, IBrush>(nameof(OpacityMask));
+
         public double Opacity
         {
             get => GetValue(OpacityProperty);
@@ -24,6 +30,18 @@ namespace Avalonia.Media
             set => SetValue(TransformProperty, value);
         }
 
+        public Geometry ClipGeometry
+        {
+            get => GetValue(ClipGeometryProperty);
+            set => SetValue(ClipGeometryProperty, value);
+        }
+
+        public IBrush OpacityMask
+        {
+            get => GetValue(OpacityMaskProperty);
+            set => SetValue(OpacityMaskProperty, value);
+        }
+
         [Content]
         public AvaloniaList<Drawing> Children { get; } = new AvaloniaList<Drawing>();
 
@@ -31,6 +49,8 @@ namespace Avalonia.Media
         {
             using (context.PushPreTransform(Transform?.Value ?? Matrix.Identity))
             using (context.PushOpacity(Opacity))
+            using (ClipGeometry != null ? context.PushGeometryClip(ClipGeometry) : default(DrawingContext.PushedState))
+            using (OpacityMask != null ? context.PushOpacityMask(OpacityMask, GetBounds()) : default(DrawingContext.PushedState))
             {
                 foreach (var drawing in Children)
                 {