Browse Source

Merge pull request #6373 from wieslawsoltes/SkiaOpacityMaskFixes

Fix skia OpacityMask push and pop methods
release/0.10.7
Nikita Tsukanov 5 years ago
committed by Dan Walmsley
parent
commit
32cdd1e35c
  1. 15
      src/Skia/Avalonia.Skia/DrawingContextImpl.cs

15
src/Skia/Avalonia.Skia/DrawingContextImpl.cs

@ -534,7 +534,11 @@ namespace Avalonia.Skia
public void PushOpacityMask(IBrush mask, Rect bounds) public void PushOpacityMask(IBrush mask, Rect bounds)
{ {
// TODO: This should be disposed // TODO: This should be disposed
var paint = new SKPaint(); var paint = new SKPaint()
{
IsAntialias = true,
Style = SKPaintStyle.StrokeAndFill
};
Canvas.SaveLayer(paint); Canvas.SaveLayer(paint);
_maskStack.Push(CreatePaint(paint, mask, bounds, true)); _maskStack.Push(CreatePaint(paint, mask, bounds, true));
@ -543,7 +547,14 @@ namespace Avalonia.Skia
/// <inheritdoc /> /// <inheritdoc />
public void PopOpacityMask() public void PopOpacityMask()
{ {
using (var paint = new SKPaint { BlendMode = SKBlendMode.DstIn }) using (var paint = new SKPaint
{
IsAntialias = true,
Style = SKPaintStyle.StrokeAndFill,
BlendMode = SKBlendMode.DstIn,
Color = new SKColor(0, 0, 0, 255),
ColorFilter = SKColorFilter.CreateLumaColor()
})
{ {
Canvas.SaveLayer(paint); Canvas.SaveLayer(paint);
using (var paintWrapper = _maskStack.Pop()) using (var paintWrapper = _maskStack.Pop())

Loading…
Cancel
Save