日期:2014-05-20  浏览次数:20793 次

求助:关于打印边距的奇怪问题
在c#中打印时,发现如果将左边距和右边距的值设成一样的,再在左边距的位置画条竖线,再在右边距的位置画条竖线,用打印机打出来会发现两条竖线离两边的距离不一样,用尺子量一下,大约左边比右边多25,但用Microsoft   Office   Document   Image   Writer打印出来左右距离是一样的。这是为什么呢?

------解决方案--------------------
因为打印机本身有一个边距(不可打印到的范围),也就是打印机针头的起始点,这也就是左边比右边要宽一点的原因,用api可以得到

------解决方案--------------------
int offx = WINAPI.GetDeviceCaps(dc, WINAPI.PHYSICALOFFSETX);

int offy = WINAPI.GetDeviceCaps(dc, WINAPI.PHYSICALOFFSETY);

int resx = WINAPI.GetDeviceCaps(dc, WINAPI.HORZRES);

int resy = WINAPI.GetDeviceCaps(dc, WINAPI.VERTRES);

float hsz = Convert.ToSingle(WINAPI.GetDeviceCaps(dc, WINAPI.HORZSIZE)) / 25.4f;

float vsz = Convert.ToSingle(WINAPI.GetDeviceCaps(dc,WINAPI.VERTSIZE)) / 25.4f;

float ppix = resx/hsz;

float ppiy = resy/vsz;

int leftMargin = offx;

int topMargin = offy;