2014-03-14 4 views
1

2349 x 3600 픽셀의 이미지를 인쇄하고 있습니다. 이미지의 크기를 조정했지만 인쇄가 흐리게 깨끗하지 않습니다. 제발 코드 루크주세요 -C#의 고해상도 이미지 인쇄

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에서 얻은 정확한 인쇄 품질을 얻는 방법. 도와주세요.

다음은 그리기 전의 코드입니다. 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(); 
+0

코드가 거의 의미가 없습니다. 원본 비트 맵은 무엇이며 왜 그리기 이미지의 크기로 850x1101이 표시됩니까? 어떻게 인쇄합니까? – TomTom

+0

TomTom이 지적한대로 코드가 불완전합니다. 지나치지는 않지만 이미지를 300dpi로 설정하거나 인쇄하기 전에 프린터의 해상도와 일치하는지 확인하십시오. – misfitgeek

+0

이것은 매우 기본입니다. 프린터의 해상도는 모니터보다 6 배나 쉽습니다. 모니터는 보통 96dpi이며 잉크젯 또는 레이저 프린터는 600dpi입니다. 따라서 비트 맵의 ​​모든 단일 픽셀은 종이에 6x6 크기의 잉크로 바뀝니다. 당신의 팔은 그것을 숨길만큼 길지 않습니다. 비트 맵의 ​​모든 픽셀이 프린터의 한 픽셀에 매핑되도록 비트 맵을 6 배 작게 인쇄하는 것이 유일한 진정한 해결책입니다. 또는 훨씬 더 큰 비트 맵을 사용하십시오. –

답변

0

인쇄하기 전에 프린터 해상도를 맞춰보십시오.

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

자세한 설명 코드를 입력 해주세요. 나는 지금 당장 가정하고있다.

+0

감사합니다. 내 전체 코드를보고, 인쇄 미리보기를 생성 한 다음이 이미지를 인쇄하고 있습니다. –

+0

위 코드를 추가했지만 여전히 인쇄 미리보기에서 큰 이미지를 생성하고 있습니다. 제발보십시오. –