|
// Licensed to the .NET Foundation under one or more agreements.
// The .NET Foundation licenses this file to you under the MIT license.
namespace System;
/// <summary>
/// Utility class for Gdi related things.
/// </summary>
public static class GdiHelper
{
static GdiHelper()
{
using var dc = GetDcScope.ScreenDC;
LogicalPixelsX = PInvokeCore.GetDeviceCaps(dc, GET_DEVICE_CAPS_INDEX.LOGPIXELSX);
LogicalPixelsY = PInvokeCore.GetDeviceCaps(dc, GET_DEVICE_CAPS_INDEX.LOGPIXELSY);
}
/// <summary>
/// Logical pixels per inch horizontally.
/// </summary>
public static int LogicalPixelsX { get; private set; }
/// <summary>
/// Logical pixels per inch vertically.
/// </summary>
public static int LogicalPixelsY { get; private set; }
// private const int TwipsPerInch = 1440;
/// <summary>
/// Himetric units per inch.
/// </summary>
public const int HiMetricPerInch = 2540;
/// <summary>
/// Convert HiMetric units to pixels (width).
/// </summary>
public static int HimetricToPixelX(int himetric)
=> (int)Math.Round((double)((long)LogicalPixelsX * himetric) / HiMetricPerInch, 0);
/// <summary>
/// Convert Himetric units to pixels (height).
/// </summary>
public static int HimetricToPixelY(int himetric)
=> (int)Math.Round((double)((long)LogicalPixelsY * himetric) / HiMetricPerInch, 0);
}
|