revert revert(悲

This commit is contained in:
YukkuriC 2023-09-04 22:12:24 +08:00 committed by ZouJin
parent 502b028d2e
commit b2547d1ddc
2 changed files with 34 additions and 11 deletions

View File

@ -1,4 +1,7 @@
using VPet_Simulator.Core;
using System.Windows.Forms;
using System.Windows.Interop;
using System.Drawing;
using VPet_Simulator.Core;
namespace VPet_Simulator.Windows
{
@ -13,24 +16,43 @@ namespace VPet_Simulator.Windows
this.mw = mw;
}
public double GetWindowsDistanceDown()
private Rectangle? _screenBorder = null;
private Rectangle ScreenBorder
{
return mw.Dispatcher.Invoke(() => System.Windows.SystemParameters.PrimaryScreenHeight - mw.Top - mw.Height);
get
{
if (_screenBorder == null)
{
var windowInteropHelper = new WindowInteropHelper(mw);
var currentScreen = Screen.FromHandle(windowInteropHelper.Handle);
_screenBorder = currentScreen.Bounds;
}
return (Rectangle)_screenBorder;
}
}
public void ClearScreenBorderCache()
{
_screenBorder = null;
}
public double GetWindowsDistanceLeft()
{
return mw.Dispatcher.Invoke(() => mw.Left);
}
public double GetWindowsDistanceRight()
{
return mw.Dispatcher.Invoke(() => System.Windows.SystemParameters.PrimaryScreenWidth - mw.Left - mw.Width);
return mw.Dispatcher.Invoke(() => mw.Left - ScreenBorder.X);
}
public double GetWindowsDistanceUp()
{
return mw.Dispatcher.Invoke(() => mw.Top);
return mw.Dispatcher.Invoke(() => mw.Top - ScreenBorder.Y);
}
public double GetWindowsDistanceRight()
{
return mw.Dispatcher.Invoke(() => ScreenBorder.Width + ScreenBorder.X - mw.Left - mw.Width);
}
public double GetWindowsDistanceDown()
{
return mw.Dispatcher.Invoke(() => ScreenBorder.Height + ScreenBorder.Y - mw.Top - mw.Height);
}
public void MoveWindows(double X, double Y)
@ -39,6 +61,7 @@ namespace VPet_Simulator.Windows
{
mw.Left += X * ZoomRatio;
mw.Top += Y * ZoomRatio;
ClearScreenBorderCache();
});
}

View File

@ -655,7 +655,7 @@ namespace VPet_Simulator.Windows
Main.DisplayToNomal();
Left = (SystemParameters.PrimaryScreenWidth - Width) / 2;
Top = (SystemParameters.PrimaryScreenHeight - Height) / 2;
//(Core.Controller as MWController).ClearScreenBorderCache();
(Core.Controller as MWController).ClearScreenBorderCache();
}));
m_menu.MenuItems.Add(new MenuItem("反馈中心".Translate(), (x, y) => { new winReport(this).Show(); }));
m_menu.MenuItems.Add(new MenuItem("开发控制台".Translate(), (x, y) => { new winConsole(this).Show(); }));