123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657 |
- using Avalonia;
- using Avalonia.Controls;
- using Avalonia.Controls.PanAndZoom;
- using Avalonia.Input;
- using Avalonia.Interactivity;
- using Avalonia.Markup.Xaml;
- namespace VeloeAvaloniaKemonoPartyApp.Views;
- public partial class ImageZoomView : UserControl
- {
- public ImageZoomView()
- {
- InitializeComponent();
- }
- private bool _mousePressed = false;
- private Point _previousPoint;
- public void ZoomImage(object? source, PinchEventArgs args)
- {
- this.GetControl<ZoomBorder>("ZoomBorder").ZoomTo(args.Scale,args.ScaleOrigin.X,args.ScaleOrigin.Y);
- }
- public void ZoomImageEnd(object? source, PinchEndedEventArgs args)
- {
- }
- public void ZoomImageToDefault(object? source, RoutedEventArgs args)
- {
- this.GetControl<ZoomBorder>("ZoomBorder").Uniform();
- }
- public void PanStart(object? source, PointerPressedEventArgs args)
- {
- _mousePressed = true;
- _previousPoint = args.GetPosition(this.GetControl<ZoomBorder>("ZoomBorder"));
- }
- public void PanImage(object? source, PointerEventArgs args)
- {
- if (_mousePressed)
- {
- var zoomBorder = this.GetControl<ZoomBorder>("ZoomBorder");
- var point = args.GetPosition(zoomBorder);
- zoomBorder.PanDelta(point.X-_previousPoint.X,point.Y-_previousPoint.Y);
- _previousPoint = point;
- }
- }
- public void PanStop(object? source, PointerReleasedEventArgs args)
- {
- _mousePressed = false;
- }
- }
|