ImageTests.cs 4.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177
  1. using System.IO;
  2. using System.Threading.Tasks;
  3. using Avalonia.Controls;
  4. using Avalonia.Media;
  5. using Avalonia.Media.Imaging;
  6. using Xunit;
  7. namespace Avalonia.Skia.RenderTests
  8. {
  9. public class ImageTests : TestBase
  10. {
  11. private readonly Bitmap _bitmap;
  12. private readonly Bitmap _bitmap2;
  13. public ImageTests()
  14. : base(@"Controls\Image")
  15. {
  16. _bitmap = new Bitmap(Path.Combine(OutputPath, "test.png"));
  17. _bitmap2 = new Bitmap(Path.Combine(OutputPath, "test2.png"));
  18. }
  19. [Fact]
  20. public async Task Image_Stretch_None()
  21. {
  22. Decorator target = new Decorator
  23. {
  24. Padding = new Thickness(20, 8),
  25. Width = 200,
  26. Height = 200,
  27. Child = new Border
  28. {
  29. Background = Brushes.Red,
  30. Child = new Image
  31. {
  32. Source = _bitmap,
  33. Stretch = Stretch.None,
  34. }
  35. }
  36. };
  37. await RenderToFile(target);
  38. CompareImages();
  39. }
  40. [Fact]
  41. public async Task Image_Stretch_Fill()
  42. {
  43. Decorator target = new Decorator
  44. {
  45. Padding = new Thickness(20, 8),
  46. Width = 200,
  47. Height = 200,
  48. Child = new Border
  49. {
  50. Background = Brushes.Red,
  51. Child = new Image
  52. {
  53. Source = _bitmap,
  54. Stretch = Stretch.Fill,
  55. }
  56. }
  57. };
  58. await RenderToFile(target);
  59. CompareImages();
  60. }
  61. [Fact]
  62. public async Task Image_Stretch_Uniform()
  63. {
  64. Decorator target = new Decorator
  65. {
  66. Padding = new Thickness(20, 8),
  67. Width = 200,
  68. Height = 200,
  69. Child = new Border
  70. {
  71. Background = Brushes.Red,
  72. Child = new Image
  73. {
  74. Source = _bitmap,
  75. Stretch = Stretch.Uniform,
  76. }
  77. }
  78. };
  79. await RenderToFile(target);
  80. CompareImages();
  81. }
  82. [Fact]
  83. public async Task Image_Stretch_UniformToFill()
  84. {
  85. Decorator target = new Decorator
  86. {
  87. Padding = new Thickness(20, 8),
  88. Width = 200,
  89. Height = 200,
  90. Child = new Border
  91. {
  92. Background = Brushes.Red,
  93. Child = new Image
  94. {
  95. Source = _bitmap,
  96. Stretch = Stretch.UniformToFill,
  97. }
  98. }
  99. };
  100. await RenderToFile(target);
  101. CompareImages();
  102. }
  103. [Fact]
  104. public async Task Image_Rotated_EdgeMode_Unspecified()
  105. {
  106. Decorator target = new Decorator
  107. {
  108. Padding = new Thickness(32, 32),
  109. Width = 200,
  110. Height = 200,
  111. Child = new Image
  112. {
  113. Source = _bitmap2,
  114. Stretch = Stretch.Uniform,
  115. RenderTransform = new RotateTransform(30),
  116. }
  117. };
  118. RenderOptions.SetEdgeMode(target, EdgeMode.Unspecified);
  119. await RenderToFile(target);
  120. CompareImages();
  121. }
  122. [Fact]
  123. public async Task Image_Rotated_EdgeMode_Antialias()
  124. {
  125. Decorator target = new Decorator
  126. {
  127. Padding = new Thickness(32, 32),
  128. Width = 200,
  129. Height = 200,
  130. Child = new Image
  131. {
  132. Source = _bitmap2,
  133. Stretch = Stretch.Uniform,
  134. RenderTransform = new RotateTransform(30),
  135. }
  136. };
  137. RenderOptions.SetEdgeMode(target, EdgeMode.Antialias);
  138. await RenderToFile(target);
  139. CompareImages();
  140. }
  141. [Fact]
  142. public async Task Image_Rotated_EdgeMode_Aliased()
  143. {
  144. Decorator target = new Decorator
  145. {
  146. Padding = new Thickness(32, 32),
  147. Width = 200,
  148. Height = 200,
  149. Child = new Image
  150. {
  151. Source = _bitmap2,
  152. Stretch = Stretch.Uniform,
  153. RenderTransform = new RotateTransform(30),
  154. }
  155. };
  156. RenderOptions.SetEdgeMode(target, EdgeMode.Aliased);
  157. await RenderToFile(target);
  158. CompareImages();
  159. }
  160. }
  161. }