File: GdiHelper.cs
Web Access
Project: src\src\System.Windows.Forms.Primitives\tests\TestUtilities\System.Windows.Forms.Primitives.TestUtilities.csproj (System.Windows.Forms.Primitives.TestUtilities)
// 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);
}