繁体   English   中英

如何在纸张的全尺寸上打印位图图像

[英]How to print bitmap image on the full size of the paper

我目前正在创建1632x1056(96 dpi时为17x11)像素的位图。 我想将此图像打印在11英寸x 17英寸的纸张上。

我可以在Windows Photo Viewer中打开该文件并将其完美打印,但是当我在c#中使用打印功能时,总是会出现一个很小的空白,因此它会将我的图像移动到不适合整个页面的位置。 这是我对打印文档的代码设置

    Image glControlBits;
    private void PrintImage()
    {
        //print the document
        PrintDocument pd = new PrintDocument();
        pd.PrintPage += pd_PrintPage;
        pd.DefaultPageSettings.PaperSize = new PaperSize("PDI", 1100, 1700);
        pd.DefaultPageSettings.Margins = new Margins(0, 0, 0, 0);
        pd.DefaultPageSettings.Landscape = true;
        pd.OriginAtMargins = true;
        //pd.DefaultPageSettings.PrintableArea = new RectangleF(0, 0, viewSize.X, viewSize.Y);
        //pd.DefaultPageSettings.HardMarginX = 0;
        //pd.DefaultPageSettings.HardMarginY = 0;
        //pd.DefaultPageSettings.PrinterResolution
        PrintDialog pdialog = new PrintDialog();
        pdialog.Document = pd;
        if (pdialog.ShowDialog() == DialogResult.OK)
        {
            //set the print image to be the bitmap of the glcontrol
            glControlBits = GrabScreenshot();
            //save the bitmap, for debugging purposes
            glControlBits.Save(@"C:\Users\Shane\Desktop\testbitmap.bmp");
            pd.Print();
        }
        else return;
    }

我认为问题可能是打印机设置了硬边距值,对于hardmarginx,值为25;对于硬边距,值为16。 有没有办法将这些设置为零,以便在打印时没有页边距偏移? 谢谢!

看来您没有使用PageBorderless属性。 尝试使用MSDN文档中指示的属性

让我知道问题是否仍然存在。

打印机设置硬边距是有原因的。 对于某些打印机,它们确实是真的。

特别是对于激光打印机,通常会从引擎发出一个用于页面顶部检测的信号,并且打印机的控制器会获取该信号,并仔细计时何时开始点亮视频电路(严重的是,它被称为视频电路,因为它的工作原理与CRT显示屏),然后在纸上写上电荷。 太早开始,您将触及第一条扫描线的内部。 通过在页面上扫描光束并将FIFO的输出馈送到光束控制电路中来写入扫描线。 只有这么多的区域,光束可以覆盖在纸张上,并且有一个硬限制。 您无法更改。

喷墨打印机可以在页面上很好地进行左右比对,但是由于机械原因(例如)纸张可能没有牢固地固定在压板上而无法将墨水喷到顶部,所以经常有机械原因导致它们无法处理左右比。 3毫米左右。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM