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

本文关键字:打印 位图 图像 全尺寸 | 更新日期: 2023-09-27 18:13:06

我目前正在创建一个1632x1056 (17x11在96 dpi)像素的位图。我想把这张图片打印在11x17in的纸上。

我可以在Windows照片查看器中打开这个文件并完美地打印它,但是当我在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;
    }

我认为问题可能是hardmargin值是由打印机设置的,hardmargin的值是25,hardmargin的值是16。有没有办法将这些设置为零,这样在打印时就没有边距偏移了?谢谢!

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

您似乎没有使用PageBorderless属性。尝试按照MSDN文档中的指示使用该属性。

如果问题仍然存在请告诉我

打印机设置硬边距是有原因的。对于一些打印机来说,他们是认真的。

特别是对于激光打印机来说,通常会有一个来自引擎的页面顶部检测信号,打印机的控制器会得到这个信号,并仔细地确定何时开始点亮视频电路(说真的——它被称为视频电路,因为它的工作原理与CRT显示器相同),并在纸上写入电荷。开始得太快,你就会碰到第一个扫描线的内部。扫描线是通过在页面上扫描波束并将FIFO的输出输入波束控制电路来写入的。光束只能在纸上覆盖这么多的区域,而且它有一个硬性限制。你不能改变它。

喷墨打印机可以很好地完成一页的L/R,但通常有机械原因导致它们不能处理T/B,例如,纸张可能(例如)没有足够牢固地与压板保持在一起,从而无法将墨水喷射到顶部3mm左右。