From 1daaccafc23ce958401f1d0b0b730a6bcf0cd6cb Mon Sep 17 00:00:00 2001 From: NaBian <836904362@qq.com> Date: Tue, 13 Aug 2019 23:40:20 +0800 Subject: [PATCH] add files --- .../Controls/Other/Sprite.cs | 63 ++++++++++++++++++- .../Themes/Styles/Sprite.xaml | 22 +++++++ 2 files changed, 82 insertions(+), 3 deletions(-) create mode 100644 src/Shared/HandyControl_Shared/Themes/Styles/Sprite.xaml diff --git a/src/Shared/HandyControl_Shared/Controls/Other/Sprite.cs b/src/Shared/HandyControl_Shared/Controls/Other/Sprite.cs index fb7340e5..0d1bea88 100644 --- a/src/Shared/HandyControl_Shared/Controls/Other/Sprite.cs +++ b/src/Shared/HandyControl_Shared/Controls/Other/Sprite.cs @@ -1,7 +1,64 @@ -namespace HandyControl.Controls +using System.Windows; +using System.Windows.Input; + +namespace HandyControl.Controls { - public class Sprite : System.Windows.Window + public sealed class Sprite : System.Windows.Window { - + private bool _isLeftButtonPressed; + + private double _leftMax; + + private double _topMax; + + private Sprite() + { + WindowStyle = WindowStyle.None; + AllowsTransparency = true; + InputManager.Current.PostProcessInput += Current_PostProcessInput; + } + + private void Current_PostProcessInput(object sender, ProcessInputEventArgs e) + { + if (Mouse.LeftButton == MouseButtonState.Pressed) + { + _isLeftButtonPressed = true; + } + else if(_isLeftButtonPressed) + { + if (Left < 0) + { + Left = 0; + } + + if (Left > _leftMax) + { + Left = _leftMax; + } + + if (Top > _topMax) + { + Top = _topMax; + } + } + } + + public static Sprite Show(object content) + { + var sprite = new Sprite + { + Content = content + }; + + sprite.Show(); + + var desktopWorkingArea = SystemParameters.WorkArea; + sprite._leftMax = desktopWorkingArea.Width - sprite.ActualWidth; + sprite._topMax = desktopWorkingArea.Height - sprite.ActualHeight; + sprite.Left = sprite._leftMax - 50; + sprite.Top = 50 - sprite.Padding.Top; + + return sprite; + } } } \ No newline at end of file diff --git a/src/Shared/HandyControl_Shared/Themes/Styles/Sprite.xaml b/src/Shared/HandyControl_Shared/Themes/Styles/Sprite.xaml new file mode 100644 index 00000000..420b4883 --- /dev/null +++ b/src/Shared/HandyControl_Shared/Themes/Styles/Sprite.xaml @@ -0,0 +1,22 @@ + + + + + \ No newline at end of file