Drawimage (изображение, прямоугольник) обрезает исходное изображение - PullRequest
0 голосов
/ 22 декабря 2018

Я пытаюсь напечатать изображение из файла, но Graphics.DrawImage обрезает изображение, когда я пытаюсь его напечатать.Пример: когда я пытаюсь напечатать Мона Лиза , вывод будет обрезан

Это похоже на ту же проблему, но решение не работает для меня: DrawImage масштабирует исходное изображение

Мой код:

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, но выводне меняется.

Как распечатать все изображение?

1 Ответ

0 голосов
/ 22 декабря 2018

Хорошо, у меня есть способ обойти это: я изменяю размер изображения, чтобы оно соответствовало странице.Это работает для меня, так как мои изображения в любом случае имеют формат А4.Я использую это, чтобы изменить размер изображения: Как изменить размер изображения 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);
    }
...