【问题标题】:Drawimage(Image, Rectangle) crops original ImageDrawimage(Image, Rectangle) 裁剪原始图像
【发布时间】:2018-12-22 15:32:13
【问题描述】:

我正在尝试从文件中打印图像,但 Graphics.DrawImage 在我尝试打印时会裁剪图像。 例子: 当我尝试打印Mona Lisa 时,输出为cropped

这似乎是同一个问题,但解决方案对我不起作用: DrawImage scales original image

我的代码:

private void print()
    {
        PrintDocument pd = new PrintDocument();
        
        pd.PrintPage += PrintPage;
        pd.PrinterSettings.PrinterName = "Microsoft Print to PDF";
        pd.Print();
    }

    private void PrintPage(object o, PrintPageEventArgs e)
    {
        Image img = Image.FromFile(@"C:\Users\Leres75\Desktop\MonaLisa.jpg");
        Rectangle rect = new Rectangle(0, 0, img.Width, img.Height);
        img.Save(@"C:\Users\Leres75\Desktop\TestOutput.jpg"); //not Cropped
        e.Graphics.DrawImage(img, rect);
    }

我尝试了 DrawImage 方法的不同变体,并尝试弄乱我的屏幕设置来更改 DPI,但输出没有改变。

如何打印整张图片?

【问题讨论】:

  • 图片比页面大吗?您显示的“裁剪”版本与 A4 页面的 H:V 比例非常相似,这让我认为您只是试图在页面边界之外绘制图像。
  • 试图弄乱我的屏幕设置来更改 DPI,但输出没有改变。 值得怀疑。如果您设置 dpi(图像的!!)正确(并且您需要这样做,那么保持图像的随机设置没有好处来)结果肯定会改变..
  • 蒙娜丽莎的图像范围是:宽度 = 687,高度 = 1024,页面范围是宽度 = 827,高度 = 1169
  • 这是打印出来的 pdf:link
  • 图像边界为:宽度 = 687,高度 = 1024 - 不要忽略图像的dpiDrawImage 也不会忽视!!!

标签: c# printing graphics drawimage printdocument


【解决方案1】:

好的,我有办法解决它: 我正在调整图像的大小以使其适合页面。这对我有用,因为我的图像无论如何都是 A4 格式。 我正在使用它来调整图像大小:How to resize an Image C#

我的代码现在是:

private void PrintPage(object o, PrintPageEventArgs e)
    {
        Image img = Image.FromFile(@"C:\Users\pavel\OneDrive - OSZ IMT\Desktop\MonaLisa.jpg");
        Image resizedImage = ResizeImage(img, e.PageSettings.PaperSize.Width, e.PageSettings.PaperSize.Height);
        e.Graphics.DrawImage(resizedImage, 0, 0);
    }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-05-29
    • 1970-01-01
    • 1970-01-01
    • 2016-12-13
    • 2018-10-09
    • 1970-01-01
    • 1970-01-01
    • 2018-06-20
    相关资源
    最近更新 更多