当前位置:编程学习 > C#/ASP.NET >>

用PrintDocument打印照片,为啥总是只能打出图片的一小部分

我的目的是用PrintDocument打印pictureBox里的图片,pictureBox里的图片是2496*1664像素的,输出到打印机的纸张大小是6英寸照片格式(6寸照片4*6英寸).我下面的代码的话打出来的图片只是pictureBox里图片左上角的一小部分.我的打印机分辨率为300DPI

  private void PrintPageTwo()
        {
            PrintPreviewDialog printPreviewDialog2 = new PrintPreviewDialog();//新建打印预览窗体   
            PrintDocument PrintDocument2 = new PrintDocument();//新建打印对象                     
            PageSetupDialog PageSetupDialog2 = new PageSetupDialog();//新建打印设置 
            PrintDocument2.PrintPage += new PrintPageEventHandler(printDocument2_PrintPage);//新建打印输出                         
            PrintDocument2.DefaultPageSettings.Landscape   =   false; //False 横打
   
            PaperSize pkCustomSize1 = new PaperSize("6cun",600, 400); //新建一个页面尺寸(6寸照片4*6英寸)
            PrintDocument2.DefaultPageSettings.PaperSize = pkCustomSize1;
            printPreviewDialog2.Document = PrintDocument2;//获取打印预览          
            printPreviewDialog2.ShowDialog();//打开打印预览窗口 
        }

        private void printDocument2_PrintPage(object sender, System.Drawing.Printing.PrintPageEventArgs e)
        {
 
            Image objImage = pictureBox_Show.Image;
            e.Graphics.DrawImage(objImage, 0, 0);//绘制打印预览方法二   
            PaperSize pkCustomSize1 = new PaperSize("6cun",600, 400);
            e.PageSettings.PaperSize = pkCustomSize1;
        }    --------------------编程问答-------------------- XP or 2K?

2k下经常会这样.如果不是2k,再找找代码问题. --------------------编程问答-------------------- xp下,好像是输出的图像不是6寸的,而是原始大小的,打到照片上就只有很小一部分出来了 --------------------编程问答-------------------- 尺寸,和图片的分辨率是两个概念.... --------------------编程问答-------------------- "出来一小部分"?是图片变小了,还是图片没有被完整打印? --------------------编程问答-------------------- PaperSize pkCustomSize1 = new PaperSize("6cun",600, 400); 
这句话,重新换一种定义试试. --------------------编程问答--------------------
引用 4 楼 hyblusea 的回复:
"出来一小部分"?是图片变小了,还是图片没有被完整打印?



没用完整打印出来 --------------------编程问答-------------------- 300DPI
4*6
相当于1800*1200(不考虑边框)
打印机和你的程序都很听话,只打印2496*1664的一部分

设法将图片缩小,再试试 --------------------编程问答-------------------- 300DPI 
4*6 
相当于1800*1200(不考虑边框) 
打印机和你的程序都很听话,只打印2496*1664的一部分 

设法将图片缩小,再试试 --------------------编程问答-------------------- 只是路过 --------------------编程问答-------------------- 将图片缩小在试试
补充:.NET技术 ,  C#
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,