在C#中打印高分辨率图像 [英] Print High Resolution Image in C#

查看:762
本文介绍了在C#中打印高分辨率图像的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在打印2349 x 3600像素的图像.我已调整图像大小,但打印模糊不干净.请查看代码-

I am printing image 2349 x 3600 pixels. I have resized image but printing is blurred not clean. Please looke at code -

public Bitmap resizeimage(Bitmap bitmap)
{
    Bitmap result = new Bitmap(850, 1101);
    using (Graphics grap = Graphics.FromImage(result))
    {            
        grap.CompositingQuality = System.Drawing.Drawing2D.CompositingQuality.HighQuality;
        grap.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.Bicubic;
        grap.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighQuality;
        grap.CompositingQuality = System.Drawing.Drawing2D.CompositingQuality.HighQuality;

        grap.DrawImage(bitmap, 0, 0, 850, 1101);
    }
    return result;
}

我尝试了所有方法,包括更改位图大小,图形质量,但仍然使图像模糊. 我使用了Microsoft Office 2007并调整了图像的大小并打印出来,这一点非常清楚. 如何获得Microsoft Office 2007中的精确打印质量. 请帮忙.

I tried everything from changing bitmap size, quality of graphics but still image blurred. I used microsoft office 2007 and resized image and printed it , it was so clear. How I can get exact printing quality as I got in microsoft office 2007. Please help.

以下是绘制之前的代码- PrintPreviewDialog printpreview =新的PrintPreviewDialog();

Here is code before drawing - PrintPreviewDialog printpreview = new PrintPreviewDialog();

         //   PrintPreviewControl printpreviewc = new PrintPreviewControl();
            PrintDocument printdocument = new PrintDocument();

            printdocument.PrinterSettings.PrinterName = "EPSON L100 Series";
            int horizantal_dpi = printdocument.PrinterSettings.DefaultPageSettings.PrinterResolution.X;
            int vertical_dpi = printdocument.PrinterSettings.DefaultPageSettings.PrinterResolution.Y;
            decimal final_width_dpi = (((int)printdocument.DefaultPageSettings.PrintableArea.Width * horizantal_dpi) / 100);
            decimal final_height_dpi = (((int)printdocument.DefaultPageSettings.PrintableArea.Height * vertical_dpi) / 100);

          printimagaprint = new Bitmap((int)final_width_dpi, (int)final_height_dpi);

            //set resoultion
            printimagaprint.SetResolution(horizantal_dpi, vertical_dpi);

            Graphics g = System.Drawing.Graphics.FromImage(printimagaprint);
            g.DrawImage(bitmap, 0, 0, printimagaprint.Width, printimagaprint.Height);


            printdocument.PrintPage+=new PrintPageEventHandler(printdocument_PrintPage);
          //  printdocument.Print();
            printdocument.DocumentName = textBox1.Text;
            printpreview.Document = printdocument;
            printpreview.ShowDialog();

推荐答案

在打印之前尝试匹配打印机分辨率.

Try matching the printer resolution before printing.

printDialog.PrinterSettings.PrinterName = GetTargetPrinter(); 

int horizontal_dpi = printDialog.PrinterSettings.DefaultPageSettings.PrinterResolution.X;
int vertical_dpi = printDialog.PrinterSettings.DefaultPageSettings.PrinterResolution.Y;
Decimal final_width_dpi = (((int)printDialog.PrinterSettings.DefaultPageSettings.PrintableArea.Width * horizontal_dpi) / 100); 
Decimal final_height_dpi = (((int)printDialog.PrinterSettings.DefaultPageSettings.PrintableArea.Height * vertical_dpi) / 100);

printImage = new Bitmap((int)final_width_dpi, (int)final_height_dpi);

// Set Resolution
printImage.SetResolution(horizontal_dpi, vertical_dpi);

Graphics g = System.Drawing.Graphics.FromImage(printImage);

并且请尝试提供更多描述性代码.我现在只是假设.

And please try to provide more descriptive code. I am just making assumption for now.

这篇关于在C#中打印高分辨率图像的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆