diff --git a/demo/Ursa.Demo/Pages/ImageViewerDemo.axaml b/demo/Ursa.Demo/Pages/ImageViewerDemo.axaml
index 67d03a8..9cfcb96 100644
--- a/demo/Ursa.Demo/Pages/ImageViewerDemo.axaml
+++ b/demo/Ursa.Demo/Pages/ImageViewerDemo.axaml
@@ -10,20 +10,72 @@
mc:Ignorable="d">
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/Ursa.Themes.Semi/Controls/ImageViewer.axaml b/src/Ursa.Themes.Semi/Controls/ImageViewer.axaml
index 3a8b234..485606c 100644
--- a/src/Ursa.Themes.Semi/Controls/ImageViewer.axaml
+++ b/src/Ursa.Themes.Semi/Controls/ImageViewer.axaml
@@ -4,12 +4,15 @@
xmlns:u="https://irihi.tech/ursa">
-
+
-
-
+
+
@@ -22,5 +25,8 @@
+
diff --git a/src/Ursa/Controls/ImageViewer/ImageViewer.cs b/src/Ursa/Controls/ImageViewer/ImageViewer.cs
index ca77270..ac01c35 100644
--- a/src/Ursa/Controls/ImageViewer/ImageViewer.cs
+++ b/src/Ursa/Controls/ImageViewer/ImageViewer.cs
@@ -4,25 +4,28 @@ using Avalonia.Controls.Metadata;
using Avalonia.Controls.Primitives;
using Avalonia.Input;
using Avalonia.Media;
+using Avalonia.Media.Imaging;
namespace Ursa.Controls;
[TemplatePart(PART_Image, typeof(Image))]
[TemplatePart(PART_Layer, typeof(VisualLayerManager))]
+[PseudoClasses(PC_Moving)]
public class ImageViewer: TemplatedControl
{
public const string PART_Image = "PART_Image";
public const string PART_Layer = "PART_Layer";
+ public const string PC_Moving = ":moving";
- private Image _image = null!;
+ private Image? _image = null!;
private VisualLayerManager? _layer;
private Point? _lastClickPoint;
- private Point? _lastReleasePoint;
+ private Point? _lastlocation;
- public static readonly StyledProperty