找回密码
 立即注册

QQ登录

只需一步,快速开始

hptj

高级会员

72

主题

240

帖子

1170

积分

高级会员

积分
1170

活字格认证微信认证勋章元老葡萄

hptj
高级会员   /  发表于:2014-1-6 17:07  /   查看:4829  /  回复:4
详见代码:

Demo.rar (44.29 KB, 下载次数: 2)

4 个回复

倒序浏览
roger.wang
社区贡献组   /  发表于:2014-1-6 17:20:00
沙发
回复 1楼hptj的帖子

demo运行了,和您预期的一样,存在点误差。  我需要咨询一下产品团队,请您稍等2天。

我把核心代码摘录出来了:

  1. using (Graphics g = fps.CreateGraphics())
  2.             {
  3.                 SheetView sv = fps.ActiveSheet;
  4.                 PrintInfo pi = fps.ActiveSheet.PrintInfo;
  5.                 //百分之一英寸为单位
  6.            pi.PaperSize = new PaperSize("A4", 827, 1169);
  7.                 pi.ShowColor = true;
  8.                 pi.ShowColumnHeader = PrintHeader.Hide;
  9.                 pi.ShowRowHeader = PrintHeader.Hide;
  10.                 //A4纸的像素高度为1056
  11.                 float a4Height = (float)Math.Round((double)(pi.PaperSize.Height / 100 * g.DpiY));
  12.                 //三行总的像素高度为1076
  13.                 sv.Cells[0, 0].Text = "haha";
  14.                 sv.Rows[0].Height = 1036;
  15.                 sv.Cells[1, 0].Text = "haha";
  16.                 sv.Cells[2, 0].Text = "haha";
  17.                 float rowHeight = sv.Rows[0].Height + sv.Rows[1].Height + sv.Rows[2].Height;
  18.             }
复制代码
回复 使用道具 举报
hptj
高级会员   /  发表于:2014-1-6 17:39:00
板凳
好的,谢谢,辛苦了
回复 使用道具 举报
hptj
高级会员   /  发表于:2014-1-13 11:19:00
地板
请问这个问题,产品团队有反馈吗?
回复 使用道具 举报
roger.wang
社区贡献组   /  发表于:2014-1-13 16:29:00
5#
回复 4楼hptj的帖子

抱歉,让您久等了。

这个是计算出来的:(和计算机获得的有误差)
A4纸张的像素(96DPI)为:1123.
Width = 21 cm / (2.54 cm/inch) * 96 pixel/inch = 794 pixel
Height = 29.7 cm / (2.54 cm/inch) * 96 pixel/inch = 1123 pixel
"1 pixel = 1/100 printed inch."

正确答案:
Spread Winform默认为20像素高度。
行数 = 1169 / 20 = 58
即默认打印约57行数据(含一个title)

1169pixel来自.net函数:
PrintDialog dlg = new PrintDialog();
object ss = dlg.PrinterSettings.PaperSizes[0].PaperName; //找A4纸张的大小 (1169pixel * 827)

这里有篇DPI、A4纸张的文章不错:
RenderTargetBitmap renders image of a wrong size
http://xceed.com/CS/forums/thread/1732.aspx
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部