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 namespace VPet_Simulator.Windows
{ {
@ -13,24 +16,43 @@ namespace VPet_Simulator.Windows
this.mw = mw; 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() public double GetWindowsDistanceLeft()
{ {
return mw.Dispatcher.Invoke(() => mw.Left); return mw.Dispatcher.Invoke(() => mw.Left - ScreenBorder.X);
}
public double GetWindowsDistanceRight()
{
return mw.Dispatcher.Invoke(() => System.Windows.SystemParameters.PrimaryScreenWidth - mw.Left - mw.Width);
} }
public double GetWindowsDistanceUp() 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) public void MoveWindows(double X, double Y)
@ -39,6 +61,7 @@ namespace VPet_Simulator.Windows
{ {
mw.Left += X * ZoomRatio; mw.Left += X * ZoomRatio;
mw.Top += Y * ZoomRatio; mw.Top += Y * ZoomRatio;
ClearScreenBorderCache();
}); });
} }

View File

@ -655,7 +655,7 @@ namespace VPet_Simulator.Windows
Main.DisplayToNomal(); Main.DisplayToNomal();
Left = (SystemParameters.PrimaryScreenWidth - Width) / 2; Left = (SystemParameters.PrimaryScreenWidth - Width) / 2;
Top = (SystemParameters.PrimaryScreenHeight - Height) / 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 winReport(this).Show(); }));
m_menu.MenuItems.Add(new MenuItem("开发控制台".Translate(), (x, y) => { new winConsole(this).Show(); })); m_menu.MenuItems.Add(new MenuItem("开发控制台".Translate(), (x, y) => { new winConsole(this).Show(); }));