GeometryGroupTests.cs 2.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495
  1. using System.Collections.Generic;
  2. using System.Threading.Tasks;
  3. using Avalonia.Controls;
  4. using Avalonia.Controls.Shapes;
  5. using Avalonia.Media;
  6. using Avalonia.Media.Imaging;
  7. using Xunit;
  8. #if AVALONIA_SKIA
  9. namespace Avalonia.Skia.RenderTests
  10. #else
  11. namespace Avalonia.Direct2D1.RenderTests.Media
  12. #endif
  13. {
  14. public class GeometryGroupTests : TestBase
  15. {
  16. public GeometryGroupTests()
  17. : base(@"Media\GeometryGroup")
  18. {
  19. }
  20. [Theory]
  21. [InlineData(FillRule.EvenOdd)]
  22. [InlineData(FillRule.NonZero)]
  23. public async Task FillRule_Stroke(FillRule fillRule)
  24. {
  25. var target = new Border
  26. {
  27. Width = 200,
  28. Height = 200,
  29. Background = Brushes.White,
  30. Child = new Path
  31. {
  32. Data = new GeometryGroup
  33. {
  34. FillRule = fillRule,
  35. Children =
  36. {
  37. new RectangleGeometry(new Rect(25, 25, 100, 100)),
  38. new EllipseGeometry
  39. {
  40. Center = new Point(125, 125),
  41. RadiusX = 50,
  42. RadiusY = 50,
  43. },
  44. }
  45. },
  46. Fill = Brushes.Blue,
  47. Stroke = Brushes.Red,
  48. StrokeThickness = 1,
  49. }
  50. };
  51. var testName = $"{nameof(FillRule_Stroke)}_{fillRule}";
  52. await RenderToFile(target, testName);
  53. CompareImages(testName);
  54. }
  55. [Fact]
  56. public async Task Child_Transform()
  57. {
  58. var target = new Border
  59. {
  60. Width = 200,
  61. Height = 200,
  62. Background = Brushes.White,
  63. Child = new Path
  64. {
  65. Data = new GeometryGroup
  66. {
  67. Children =
  68. {
  69. new RectangleGeometry(new Rect(25, 25, 100, 100))
  70. {
  71. Transform = new RotateTransform(45, 75, 75)
  72. },
  73. new EllipseGeometry
  74. {
  75. Center = new Point(125, 125),
  76. RadiusX = 50,
  77. RadiusY = 50,
  78. },
  79. }
  80. },
  81. Fill = Brushes.Blue,
  82. Stroke = Brushes.Red,
  83. StrokeThickness = 1,
  84. }
  85. };
  86. await RenderToFile(target);
  87. CompareImages();
  88. }
  89. }
  90. }