porting shell from nuget to local

This commit is contained in:
NaBian committed 2020-12-06 11:18:36 +08:00
1 parent d971be8816
commit 035ef17569
164 files changed
+10363 -11

No files matched your search

@@ -0,0 +1,70 @@
using System;
using System.Diagnostics.CodeAnalysis;
using System.Windows;
using System.Windows.Media;
namespace Standard
{
internal static class DpiHelper
{
[SuppressMessage("Microsoft.Performance", "CA1810:InitializeReferenceTypeStaticFieldsInline")]
static DpiHelper()
{
using (SafeDC desktop = SafeDC.GetDesktop())
{
int deviceCaps = NativeMethods.GetDeviceCaps(desktop, DeviceCap.LOGPIXELSX);
int deviceCaps2 = NativeMethods.GetDeviceCaps(desktop, DeviceCap.LOGPIXELSY);
DpiHelper._transformToDip = Matrix.Identity;
DpiHelper._transformToDip.Scale(96.0 / (double)deviceCaps, 96.0 / (double)deviceCaps2);
DpiHelper._transformToDevice = Matrix.Identity;
DpiHelper._transformToDevice.Scale((double)deviceCaps / 96.0, (double)deviceCaps2 / 96.0);
}
}
public static Point LogicalPixelsToDevice(Point logicalPoint)
{
return DpiHelper._transformToDevice.Transform(logicalPoint);
}
public static Point DevicePixelsToLogical(Point devicePoint)
{
return DpiHelper._transformToDip.Transform(devicePoint);
}
[SuppressMessage("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
public static Rect LogicalRectToDevice(Rect logicalRectangle)
{
Point point = DpiHelper.LogicalPixelsToDevice(new Point(logicalRectangle.Left, logicalRectangle.Top));
Point point2 = DpiHelper.LogicalPixelsToDevice(new Point(logicalRectangle.Right, logicalRectangle.Bottom));
return new Rect(point, point2);
}
public static Rect DeviceRectToLogical(Rect deviceRectangle)
{
Point point = DpiHelper.DevicePixelsToLogical(new Point(deviceRectangle.Left, deviceRectangle.Top));
Point point2 = DpiHelper.DevicePixelsToLogical(new Point(deviceRectangle.Right, deviceRectangle.Bottom));
return new Rect(point, point2);
}
[SuppressMessage("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
public static Size LogicalSizeToDevice(Size logicalSize)
{
Point point = DpiHelper.LogicalPixelsToDevice(new Point(logicalSize.Width, logicalSize.Height));
return new Size
{
Width = point.X,
Height = point.Y
};
}
public static Size DeviceSizeToLogical(Size deviceSize)
{
Point point = DpiHelper.DevicePixelsToLogical(new Point(deviceSize.Width, deviceSize.Height));
return new Size(point.X, point.Y);
}
private static Matrix _transformToDevice;
private static Matrix _transformToDip;
}
}