C# 如何在全尺寸纸张上打印位图图像
我目前正在创建一个1632x156(17x11,96 dpi)像素的位图。我想在一张11英寸x 17英寸的纸上打印这张图像 我可以在Windows Photo Viewer中打开此文件并将其完美打印出来,但是当我使用c#中的打印功能时,总会出现一个小的边距,因此它会将我的图像移动到不适合整个页面的位置。 这是我的打印文档代码设置C# 如何在全尺寸纸张上打印位图图像,c#,printing,margin,C#,Printing,Margin,我目前正在创建一个1632x156(17x11,96 dpi)像素的位图。我想在一张11英寸x 17英寸的纸上打印这张图像 我可以在Windows Photo Viewer中打开此文件并将其完美打印出来,但是当我使用c#中的打印功能时,总会出现一个小的边距,因此它会将我的图像移动到不适合整个页面的位置。 这是我的打印文档代码设置 Image glControlBits; private void PrintImage() { //print the doc
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;
}
我认为问题可能在于硬边距值是由打印机设置的,硬边距值为25,硬边距值为16。是否有办法将这些设置为零,以便打印时无边距偏移?谢谢 您似乎没有使用PageBorderless属性。请尝试使用中所示的属性
如果问题仍然存在,请告诉我。打印机设置硬边距是有原因的。对于一些印刷商来说,他们真的是认真的 特别是对于激光打印机,通常会有一个来自引擎的页眉检测信号,打印机控制器将获得该信号,并在开始点亮视频电路(说真的,它被称为视频电路,因为它的工作原理与CRT显示器相同)并在纸张上写入电荷的时间。如果开始得太快,您将在第一条扫描线中触及内部构件。扫描线是通过在页面上扫描光束并将FIFO输出馈入光束控制电路来写入的。光束在纸上所能覆盖的面积有限,而且有一个硬限制。你不能改变它
喷墨打印机可以很好地在一页上打印L/R,但它们不能像纸张那样管理t/B通常有机械原因(例如)没有足够牢固地固定在压盘上,无法将墨水喷到顶部3 mm左右。因此,如何复制windows photo viewer用于将图像打印到整页的打印行为根据文档,许多打印机不支持此属性。我也不知道如何实现这个功能