浏览代码

:recycle: 优化贴边隐藏的动画时间

liufei 3 年之前
父节点
当前提交
8f043ffd05
共有 2 个文件被更改,包括 26 次插入78 次删除
  1. 3 1
      GeekDesk.csproj
  2. 23 77
      Util/MarginHide.cs

+ 3 - 1
GeekDesk.csproj

@@ -49,7 +49,7 @@
     <Prefer32Bit>false</Prefer32Bit>
   </PropertyGroup>
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
-    <PlatformTarget>AnyCPU</PlatformTarget>
+    <PlatformTarget>x64</PlatformTarget>
     <DebugType>pdbonly</DebugType>
     <Optimize>true</Optimize>
     <OutputPath>bin\Release\</OutputPath>
@@ -57,6 +57,8 @@
     <ErrorReport>prompt</ErrorReport>
     <WarningLevel>4</WarningLevel>
     <AllowUnsafeBlocks>true</AllowUnsafeBlocks>
+    <Prefer32Bit>false</Prefer32Bit>
+    <GenerateSerializationAssemblies>Auto</GenerateSerializationAssemblies>
   </PropertyGroup>
   <PropertyGroup>
     <StartupObject>GeekDesk.App</StartupObject>

+ 23 - 77
Util/MarginHide.cs

@@ -25,8 +25,8 @@ namespace GeekDesk.Util
     {
         private static Window window;//定义使用该方法的窗体
 
-        private static readonly int hideTime = 50;
-        private static readonly int showTime = 30;
+        private static readonly int hideTime = 65;
+        private static readonly int showTime = 15;
 
         private static int animalTime;
 
@@ -127,8 +127,7 @@ namespace GeekDesk.Util
             else if (mouseX >= windowLeft && mouseX <= windowLeft + windowWidth
               && mouseY >= windowTop && mouseY <= windowTop + windowHeight && IS_HIDE && window.Visibility != Visibility.Visible)
             {
-                window.Visibility = Visibility.Visible;
-                App.DoEvents();
+                window.Show();
                 //上方显示
                 if (windowTop <= screenTop - showMarginWidth)
                 {
@@ -228,17 +227,30 @@ namespace GeekDesk.Util
             {
                 App.Current.Dispatcher.Invoke(() =>
                 {
+
+                    switch (hideType)
+                    {
+                        case HideType.LEFT_SHOW:
+                            to -= 20;
+                            break;
+                        case HideType.RIGHT_SHOW:
+                            to += 20;
+                            break;
+                        case HideType.TOP_SHOW:
+                            to -= 20;
+                            break;
+                    }
+
                     double abs = Math.Abs(Math.Abs(to) - Math.Abs(from));
-                    double subLen = abs / hideTime;
 
-                    if ((int)hideType <= 3)
+                    if (hideType <= HideType.RIGHT_SHOW)
                     {
                         animalTime = showTime;                        
                     } else
                     {
                         animalTime = hideTime;
                     }
-
+                    double subLen = abs / animalTime;
                     int count = 0;
                     while (count < animalTime)
                     {
@@ -269,86 +281,20 @@ namespace GeekDesk.Util
 
                     switch (hideType)
                     {
-                        case HideType.LEFT_HIDE:
-                            window.Left = to;
-                            break;
-                        case HideType.LEFT_SHOW:
-                            window.Left = to - 20;
-                            break;
-                        case HideType.RIGHT_HIDE:
-                            window.Left = to;
-                            break;
-                        case HideType.RIGHT_SHOW:
-                            window.Left = to + 20;
-                            break;
                         case HideType.TOP_HIDE:
                             window.Top = to;
                             break;
                         case HideType.TOP_SHOW:
-                            window.Top = to - 20;
+                            window.Top = to;
                             break;
+                        default:
+                        window.Left = to;
+                        break;
                     }
                     if (hideType > HideType.RIGHT_SHOW)
                     {
                         window.Visibility = Visibility.Collapsed;
                     }
-
-                    //double toTemp = to;
-                    //double leftT = 0;
-                    //double topT = 0;
-                    //switch (hideType)
-                    //{
-                    //    case HideType.LEFT_HIDE:
-                    //        to += leftT;
-                    //        break;
-                    //    case HideType.LEFT_SHOW:
-                    //        to -= leftT;
-                    //        break;
-                    //    case HideType.RIGHT_HIDE:
-                    //        to -= leftT;
-                    //        break;
-                    //    case HideType.RIGHT_SHOW:
-                    //        to += leftT;
-                    //        break;
-                    //    case HideType.TOP_HIDE:
-                    //        to += topT;
-                    //        break;
-                    //    case HideType.TOP_SHOW:
-                    //        to -= topT;
-                    //        break;
-                    //}
-                    //DoubleAnimation da = new DoubleAnimation
-                    //{
-                    //    From = from,
-                    //    To = to,
-                    //    Duration = new Duration(TimeSpan.FromMilliseconds(hideTime))
-                    //};
-                    //// 如果是显示 则贴屏幕侧不显示阴影
-                    //bool isShow = false;
-                    //int shadowWidthTemp = Constants.SHADOW_WIDTH;
-                    //if (hideType <= HideType.RIGHT_SHOW)
-                    //{
-                    //    isShow = true;
-                    //    if (hideType == HideType.RIGHT_SHOW)
-                    //    {
-                    //        shadowWidthTemp = -shadowWidthTemp;
-                    //    }
-                    //}
-                    //da.Completed += (s, e) =>
-                    //{
-                    //    if ("Top".Equals(property.Name))
-                    //    {
-                    //        window.Top = isShow ? toTemp - shadowWidthTemp : toTemp;
-                    //    }
-                    //    else
-                    //    {
-                    //        window.Left = isShow ? toTemp - shadowWidthTemp : toTemp;
-                    //    }
-                    //    window.BeginAnimation(property, null);
-                    //};
-
-                    //Timeline.SetDesiredFrameRate(da, 60);
-                    //window.BeginAnimation(property, da);
                 });
             }).Start();