8 changed files with 282 additions and 160 deletions
@ -0,0 +1,101 @@ |
|||||
|
using NPOI.SS.Formula.Functions; |
||||
|
using System; |
||||
|
using System.Collections.Generic; |
||||
|
using System.Runtime.InteropServices; |
||||
|
using System.Text; |
||||
|
using System.Windows; |
||||
|
|
||||
|
namespace BBWY.Client.Helpers |
||||
|
{ |
||||
|
public class UnitConverHelper |
||||
|
{ |
||||
|
|
||||
|
|
||||
|
int dpiX = 0; |
||||
|
int dpiY = 0; |
||||
|
|
||||
|
|
||||
|
public UnitConverHelper() |
||||
|
{ |
||||
|
|
||||
|
GetDpi(); |
||||
|
} |
||||
|
|
||||
|
|
||||
|
private void GetDpi() |
||||
|
{ |
||||
|
var hDc = GetDC(IntPtr.Zero); |
||||
|
|
||||
|
dpiX = GetDeviceCaps(hDc, LOGPIXELSX); |
||||
|
dpiY = GetDeviceCaps(hDc, LOGPIXELSY); |
||||
|
ReleaseDC(IntPtr.Zero, hDc); |
||||
|
} |
||||
|
|
||||
|
|
||||
|
|
||||
|
|
||||
|
|
||||
|
|
||||
|
/// <summary>
|
||||
|
/// 毫米转像素(获取打印的宽和高)
|
||||
|
/// </summary>
|
||||
|
/// <param name="mm"></param>
|
||||
|
/// <returns></returns>
|
||||
|
public PrintPx MmToPx(double mWidth, double mHeight) |
||||
|
{ |
||||
|
if(dpiX<=0||dpiY<=0) GetDpi(); |
||||
|
|
||||
|
return new PrintPx |
||||
|
{ |
||||
|
Width = mWidth * dpiX / 25.4, |
||||
|
Height = mHeight * dpiY / 25.4, |
||||
|
|
||||
|
}; |
||||
|
} |
||||
|
|
||||
|
/// <summary>
|
||||
|
/// 像素转毫米
|
||||
|
/// </summary>
|
||||
|
/// <param name="pxWidth"></param>
|
||||
|
/// <param name="pxHeight"></param>
|
||||
|
/// <returns></returns>
|
||||
|
public PrintPx PxToMm(double pxWidth, double pxHeight) |
||||
|
{ |
||||
|
if (dpiX <= 0 || dpiY <= 0) GetDpi(); |
||||
|
return new PrintPx |
||||
|
{ |
||||
|
Width = pxWidth * 25.4 / dpiX, |
||||
|
Height = pxHeight * 25.4 / dpiY, |
||||
|
|
||||
|
}; |
||||
|
} |
||||
|
|
||||
|
|
||||
|
private const int LOGPIXELSX = 88; |
||||
|
private const int LOGPIXELSY = 90; |
||||
|
|
||||
|
[DllImport("gdi32.dll")] |
||||
|
private static extern int GetDeviceCaps(IntPtr hdc, int index); |
||||
|
|
||||
|
[DllImport("user32.dll")] |
||||
|
private static extern IntPtr GetDC(IntPtr hWnd); |
||||
|
|
||||
|
[DllImport("user32.dll")] |
||||
|
private static extern int ReleaseDC(IntPtr hWnd, IntPtr hDc); |
||||
|
|
||||
|
} |
||||
|
|
||||
|
|
||||
|
|
||||
|
|
||||
|
|
||||
|
|
||||
|
public class PrintPx |
||||
|
{ |
||||
|
|
||||
|
public double Width { get; set; } |
||||
|
|
||||
|
public double Height { get; set; } |
||||
|
} |
||||
|
|
||||
|
} |
Loading…
Reference in new issue