如何在全尺寸纸张上打印位图图像
本文关键字:打印 位图 图像 全尺寸 | 更新日期: 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左右。