|
|
@@ -52,6 +52,37 @@ namespace Avalonia.Direct2D1.RenderTests.Controls
|
|
|
CompareImages();
|
|
|
}
|
|
|
|
|
|
+ [Fact]
|
|
|
+ public async Task GeometryClip()
|
|
|
+ {
|
|
|
+ Decorator target = new Decorator
|
|
|
+ {
|
|
|
+ Padding = new Thickness(8),
|
|
|
+ Width = 200,
|
|
|
+ Height = 200,
|
|
|
+ Child = new CustomRenderer((control, context) =>
|
|
|
+ {
|
|
|
+ var clip = new EllipseGeometry(new Rect(control.Bounds.Size));
|
|
|
+
|
|
|
+ context.FillRectangle(
|
|
|
+ Brushes.Red,
|
|
|
+ new Rect(control.Bounds.Size),
|
|
|
+ 4);
|
|
|
+
|
|
|
+ using (context.PushGeometryClip(clip))
|
|
|
+ {
|
|
|
+ context.FillRectangle(
|
|
|
+ Brushes.Blue,
|
|
|
+ new Rect(control.Bounds.Size),
|
|
|
+ 4);
|
|
|
+ }
|
|
|
+ }),
|
|
|
+ };
|
|
|
+
|
|
|
+ await RenderToFile(target);
|
|
|
+ CompareImages();
|
|
|
+ }
|
|
|
+
|
|
|
[Fact]
|
|
|
public async Task Opacity()
|
|
|
{
|
|
|
@@ -81,6 +112,46 @@ namespace Avalonia.Direct2D1.RenderTests.Controls
|
|
|
CompareImages();
|
|
|
}
|
|
|
|
|
|
+ [Fact]
|
|
|
+ public async Task OpacityMask()
|
|
|
+ {
|
|
|
+ Decorator target = new Decorator
|
|
|
+ {
|
|
|
+ Padding = new Thickness(8),
|
|
|
+ Width = 200,
|
|
|
+ Height = 200,
|
|
|
+ Child = new CustomRenderer((control, context) =>
|
|
|
+ {
|
|
|
+ var mask = new LinearGradientBrush
|
|
|
+ {
|
|
|
+ StartPoint = new RelativePoint(0, 0, RelativeUnit.Relative),
|
|
|
+ EndPoint = new RelativePoint(1, 1, RelativeUnit.Relative),
|
|
|
+ GradientStops = new[]
|
|
|
+ {
|
|
|
+ new GradientStop(Color.FromUInt32(0xffffffff), 0),
|
|
|
+ new GradientStop(Color.FromUInt32(0x00ffffff), 1)
|
|
|
+ },
|
|
|
+ };
|
|
|
+
|
|
|
+ context.FillRectangle(
|
|
|
+ Brushes.Red,
|
|
|
+ new Rect(control.Bounds.Size),
|
|
|
+ 4);
|
|
|
+
|
|
|
+ using (context.PushOpacityMask(mask, new Rect(control.Bounds.Size)))
|
|
|
+ {
|
|
|
+ context.FillRectangle(
|
|
|
+ Brushes.Blue,
|
|
|
+ new Rect(control.Bounds.Size).Deflate(20),
|
|
|
+ 4);
|
|
|
+ }
|
|
|
+ }),
|
|
|
+ };
|
|
|
+
|
|
|
+ await RenderToFile(target);
|
|
|
+ CompareImages();
|
|
|
+ }
|
|
|
+
|
|
|
class CustomRenderer : Control
|
|
|
{
|
|
|
private Action<CustomRenderer, DrawingContext> _render;
|