在c#中打印高分辨率图像

本文关键字:高分辨率 图像 打印 | 更新日期: 2023-09-27 17:50:18

我打印图像2349 x 3600像素。我已经调整了图像大小,但打印模糊不干净。请看代码-

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

我尝试了一切从改变位图大小,图形质量,但仍然图像模糊。我用了微软office 2007,调整了图片的大小并打印出来,非常清晰。我怎样才能得到和微软office 2007一样的打印质量。请帮助。

这是绘制前的代码-

PrintPreviewDialog printpreview = new PrintPreviewDialog();
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();

在c#中打印高分辨率图像

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

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);

请尽量提供更多的描述性代码。