在C#中,以像素为尺寸单位。 像素是相对大小的概念,毫米变换与当前显示器的分辨率有关,变换的系数因分辨率而异。
通过C#的GDI,可以换算像素和毫米。
另一方面,基于Win32 API定义函数取得显示设备信息:
//
//获取机器信息
//
//检查设备的句柄
//设备信息所在的索引值
//返回对应索引值的设备信息
[dllimport(GDI32.dll ) ]
私有数据中心索引(intptr hdc,int index );
二、根据显示设备信息计算像素与毫米的换算比例:
定义获取Graphics对象所需的控件
面板面板=new panel (;
//从控件所在的句柄获取Graphics对象
graphics graphics=graphics.from hwnd (panel.handle );
//获取设备句柄
IntPtr hdc=graphics.GetHdc (;
//获取屏幕宽度(mm ) HORZSIZE
intwidth=getdevicecaps(HDC,4 );
//获取画面高度(mm ) VERTSIZE
intheight=getdevicecaps(HDC,6 );
//获取画面宽度(像素) HORZRES
intx像素=getdevicecaps (hdc,8 );
//获取屏幕高度(像素) VERTRES
intypixels=getdevicecaps(HDC,10 );
//释放设备句柄
graphics.ReleaseHDC(HDC;
释放图形对象
graphics.Dispose (;
//计算x轴方向的像素与毫米的比率
双精度速率=(双精度) x像素/(双精度)宽度;
计算//y轴方向像素与毫米的比率
双速率=(双精度) ypixels/(双精度) height;
三.像素数换算为毫米数:
//定义要换算的毫米数
double millimeter=10;
计算//x轴方向像素数
intxpixel=(int ) math.round ) xrate*millimeter;
计算//y轴方向像素数
intypixel=(int ) math.round ) yrate*millimeter;
四.毫米数换算为像素数:
//定义要换算的像素数
int pixel=10;
计算//x轴方向毫米数
双xmillimeter=pixel/x rate;
计算//y轴方向毫米数
double yMillimeter=pixel/yRate;