日期:2014-05-17  浏览次数:21243 次

printdocument打印一寸图片比例问题
我想在A4纸上打印多张一寸图片,采用printdocumnet,但是如果按原始比例打印会出现如下情况:
1、图片可正常显示,但是图片之间的间距不能用像素定位,因为有人说不同的电脑像素表示的大小 是不一样的,这样就会出现我电脑上正常,别 人可能不正常,采用的方法是drawimageunscale()
2、如果采用方法drawimage()又会不按比例打印,而且大的离谱,一行只能放两张半,请问应该如何操作才能正常打印图片这是图像比例正常,但是间距不正常的情况 ,下一张是图像不正常的情况

以下是主要代码 :
      public void bazxcy_printEvent()
        {
            //PaperSize ps = new PaperSize("A4", 2479, 3508);
           // pdDocument.DefaultPageSettings.PaperSize = ps;
            PaperSize ps = new PaperSize("Your Paper Name", 100, 70);
            ps.RawKind = 9; 
            pdDocument.DefaultPageSettings.PaperSize = ps;
            //订阅EndPrint事件,释放资源
            pdDocument.PrintPage += new PrintPageEventHandler(OnPrintPage);
            //订阅Print打印事件,该方法必须放在订阅打印事件的最后
            StartPrint();
        }

private int j = 0;//为for循环定义一个初始化变量,可以在return后重新走循环下一个值。
        /// <summary>
        /// 2、得到打印内容-每个打印任务只调用OnBeginPrint()一次。
        /// 3、并判断是否绘制多个打印界面
        /// printDocument的PrintPage事件
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void OnPrintPage(object sender, PrintPageEventArgs e)
        {
            pageCount = dt.Rows.Count/16;//定义页数
            for (int i = j*16; i < dt.Rows.Count; i++)
            {
 
                //打印内容加载
                FileStream fs = new FileStream(dt.Rows[i]["ImageName"].ToString(), FileMode.Open, FileAccess.Read); 
                image=Image.FromStream(fs);
                //以下为绘制打印界面
                int leftMargin = Convert.ToInt32((e.MarginBounds.Left) * 3 / 4);  //左边距