PrinterUnitConvert
Specifies a series of conversion methods that are useful when interoperating with the Win32 printing API. This class cannot be inherited.
using System.Runtime.CompilerServices;
namespace System.Drawing.Printing
{
public sealed class PrinterUnitConvert
{
private PrinterUnitConvert()
{
}
public static double Convert(double value, PrinterUnit fromUnit, PrinterUnit toUnit)
{
double num = UnitsPerDisplay(fromUnit);
double num2 = UnitsPerDisplay(toUnit);
return value * num2 / num;
}
public static int Convert(int value, PrinterUnit fromUnit, PrinterUnit toUnit)
{
return (int)Math.Round(Convert((double)value, fromUnit, toUnit));
}
public static Point Convert(Point value, PrinterUnit fromUnit, PrinterUnit toUnit)
{
return new Point(Convert(value.X, fromUnit, toUnit), Convert(value.Y, fromUnit, toUnit));
}
public static Size Convert(Size value, PrinterUnit fromUnit, PrinterUnit toUnit)
{
return new Size(Convert(value.Width, fromUnit, toUnit), Convert(value.Height, fromUnit, toUnit));
}
public static Rectangle Convert(Rectangle value, PrinterUnit fromUnit, PrinterUnit toUnit)
{
return new Rectangle(Convert(value.X, fromUnit, toUnit), Convert(value.Y, fromUnit, toUnit), Convert(value.Width, fromUnit, toUnit), Convert(value.Height, fromUnit, toUnit));
}
[NullableContext(1)]
public static Margins Convert(Margins value, PrinterUnit fromUnit, PrinterUnit toUnit)
{
return new Margins {
DoubleLeft = Convert(value.DoubleLeft, fromUnit, toUnit),
DoubleRight = Convert(value.DoubleRight, fromUnit, toUnit),
DoubleTop = Convert(value.DoubleTop, fromUnit, toUnit),
DoubleBottom = Convert(value.DoubleBottom, fromUnit, toUnit)
};
}
private static double UnitsPerDisplay(PrinterUnit unit)
{
switch (unit) {
case PrinterUnit.Display:
return 1;
case PrinterUnit.ThousandthsOfAnInch:
return 10;
case PrinterUnit.HundredthsOfAMillimeter:
return 25.4;
case PrinterUnit.TenthsOfAMillimeter:
return 2.54;
default:
return 1;
}
}
}
}