ClippingPage.xaml.cs 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. using System;
  2. using System.Reactive.Linq;
  3. using Avalonia;
  4. using Avalonia.Animation;
  5. using Avalonia.Controls;
  6. using Avalonia.Data;
  7. using Avalonia.Markup.Xaml;
  8. using Avalonia.Media;
  9. namespace RenderTest.Pages
  10. {
  11. public class ClippingPage : UserControl
  12. {
  13. private Geometry _clip;
  14. public ClippingPage()
  15. {
  16. InitializeComponent();
  17. CreateAnimations();
  18. WireUpCheckbox();
  19. }
  20. private void InitializeComponent()
  21. {
  22. AvaloniaXamlLoader.Load(this);
  23. }
  24. private void CreateAnimations()
  25. {
  26. //var clipped = this.FindControl<Border>("clipChild");
  27. //var degrees = Animate.Timer.Select(x => x.TotalMilliseconds / 5);
  28. //clipped.RenderTransform = new RotateTransform();
  29. //clipped.RenderTransform.Bind(RotateTransform.AngleProperty, degrees, BindingPriority.Animation);
  30. //clipped.Bind(
  31. // Border.BackgroundProperty,
  32. // clipped.GetObservable(Control.IsPointerOverProperty)
  33. // .Select(x => x ? Brushes.Crimson : AvaloniaProperty.UnsetValue));
  34. }
  35. private void WireUpCheckbox()
  36. {
  37. var useMask = this.FindControl<CheckBox>("useMask");
  38. var clipped = this.FindControl<Border>("clipped");
  39. _clip = clipped.Clip;
  40. useMask.Click += (s, e) => clipped.Clip = clipped.Clip == null ? _clip : null;
  41. }
  42. }
  43. }