diff --git a/src/Skia/Avalonia.Skia/DrawingContextImpl.cs b/src/Skia/Avalonia.Skia/DrawingContextImpl.cs index ce5b59a86d..6a2ec35a85 100644 --- a/src/Skia/Avalonia.Skia/DrawingContextImpl.cs +++ b/src/Skia/Avalonia.Skia/DrawingContextImpl.cs @@ -250,6 +250,7 @@ namespace Avalonia.Skia paint.Color = new SKColor(255, 255, 255, (byte)(255 * opacity * _currentOpacity)); paint.FilterQuality = RenderOptions.BitmapInterpolationMode.ToSKFilterQuality(); paint.BlendMode = RenderOptions.BitmapBlendingMode.ToSKBlendMode(); + paint.IsAntialias = RenderOptions.EdgeMode != EdgeMode.Aliased; drawableImage.Draw(this, s, d, paint); SKPaintCache.Shared.ReturnReset(paint); diff --git a/tests/Avalonia.RenderTests/Controls/ImageTests.cs b/tests/Avalonia.RenderTests/Controls/ImageTests.cs index 3bf935d199..7573f30445 100644 --- a/tests/Avalonia.RenderTests/Controls/ImageTests.cs +++ b/tests/Avalonia.RenderTests/Controls/ImageTests.cs @@ -14,11 +14,13 @@ namespace Avalonia.Direct2D1.RenderTests.Controls public class ImageTests : TestBase { private readonly Bitmap _bitmap; + private readonly Bitmap _bitmap2; public ImageTests() : base(@"Controls\Image") { _bitmap = new Bitmap(Path.Combine(OutputPath, "test.png")); + _bitmap2 = new Bitmap(Path.Combine(OutputPath, "test2.png")); } [Fact] @@ -112,5 +114,68 @@ namespace Avalonia.Direct2D1.RenderTests.Controls await RenderToFile(target); CompareImages(); } + + [Fact] + public async Task Image_Rotated_EdgeMode_Unspecified() + { + Decorator target = new Decorator + { + Padding = new Thickness(32, 32), + Width = 200, + Height = 200, + Child = new Image + { + Source = _bitmap2, + Stretch = Stretch.Uniform, + RenderTransform = new RotateTransform(30), + } + }; + RenderOptions.SetEdgeMode(target, EdgeMode.Unspecified); + + await RenderToFile(target); + CompareImages(); + } + + [Fact] + public async Task Image_Rotated_EdgeMode_Antialias() + { + Decorator target = new Decorator + { + Padding = new Thickness(32, 32), + Width = 200, + Height = 200, + Child = new Image + { + Source = _bitmap2, + Stretch = Stretch.Uniform, + RenderTransform = new RotateTransform(30), + } + }; + RenderOptions.SetEdgeMode(target, EdgeMode.Antialias); + + await RenderToFile(target); + CompareImages(); + } + + [Fact] + public async Task Image_Rotated_EdgeMode_Aliased() + { + Decorator target = new Decorator + { + Padding = new Thickness(32, 32), + Width = 200, + Height = 200, + Child = new Image + { + Source = _bitmap2, + Stretch = Stretch.Uniform, + RenderTransform = new RotateTransform(30), + } + }; + RenderOptions.SetEdgeMode(target, EdgeMode.Aliased); + + await RenderToFile(target); + CompareImages(); + } } } diff --git a/tests/TestFiles/Skia/Controls/Image/Image_Rotated_EdgeMode_Aliased.expected.png b/tests/TestFiles/Skia/Controls/Image/Image_Rotated_EdgeMode_Aliased.expected.png new file mode 100644 index 0000000000..69945c4417 Binary files /dev/null and b/tests/TestFiles/Skia/Controls/Image/Image_Rotated_EdgeMode_Aliased.expected.png differ diff --git a/tests/TestFiles/Skia/Controls/Image/Image_Rotated_EdgeMode_Antialias.expected.png b/tests/TestFiles/Skia/Controls/Image/Image_Rotated_EdgeMode_Antialias.expected.png new file mode 100644 index 0000000000..63d3d33181 Binary files /dev/null and b/tests/TestFiles/Skia/Controls/Image/Image_Rotated_EdgeMode_Antialias.expected.png differ diff --git a/tests/TestFiles/Skia/Controls/Image/Image_Rotated_EdgeMode_Unspecified.expected.png b/tests/TestFiles/Skia/Controls/Image/Image_Rotated_EdgeMode_Unspecified.expected.png new file mode 100644 index 0000000000..63d3d33181 Binary files /dev/null and b/tests/TestFiles/Skia/Controls/Image/Image_Rotated_EdgeMode_Unspecified.expected.png differ diff --git a/tests/TestFiles/Skia/Controls/Image/test2.png b/tests/TestFiles/Skia/Controls/Image/test2.png new file mode 100644 index 0000000000..b77c7ba147 Binary files /dev/null and b/tests/TestFiles/Skia/Controls/Image/test2.png differ diff --git a/tests/TestFiles/Skia/Media/ImageBrush/ImageBrush_Tile_UniformToFill.expected.png b/tests/TestFiles/Skia/Media/ImageBrush/ImageBrush_Tile_UniformToFill.expected.png index 0f134789a5..0cbc115d64 100644 Binary files a/tests/TestFiles/Skia/Media/ImageBrush/ImageBrush_Tile_UniformToFill.expected.png and b/tests/TestFiles/Skia/Media/ImageBrush/ImageBrush_Tile_UniformToFill.expected.png differ