2010-03-19 2 views
5

Vb.Net 응용 프로그램은 처음부터 비트 맵을 만들고 tiff로 변환하거나 프린터로 보냅니다. 두 경우 모두 이미지 품질 (이 경우 글꼴)이 전혀 좋지 않습니다. 아래 나열된 샘플 코드는 이미지에 쓰는 데 사용하는 그래픽 개체를 만듭니다.VB.Net에서 처음부터 비트 맵 이미지를 만들 때 화질이 좋아 지나요?

Dim gr2 As Graphics = Graphics.FromImage(New Bitmap(800, 1000), Imaging.PixelFormat.Format32bppPArgb)) 
+0

비트 맵 (bmp)과 동일한 문제가 있습니까? –

+0

예, BMP, TIFF, JPG 등 어떤 유형을 만들어도 품질이 악화됩니다. – ajl

답변

10

:

Bitmap bm = new Bitmap(iWidth, iHeight); 
    using (Graphics graphics = Graphics.FromImage(bm)) 
    { 
    graphics.CompositingMode = System.Drawing.Drawing2D.CompositingMode.SourceCopy; 
    graphics.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.HighQualityBicubic; 
    graphics.DrawImage(bmOriginal, 0, 0, iWidth, iHeight); 
    } 

나는 글꼴이 방법을 사용했다. .Net은 일반적으로 96 DPI 인 시스템 해상도를 사용하지만 프린터는 300 DPI 이상의 파일을 처리 할 수 ​​있습니다.

'Create a new bitmap 
    Using Bmp As New Bitmap(800, 1000, Imaging.PixelFormat.Format32bppPArgb) 
     'Set the resolution to 300 DPI 
     Bmp.SetResolution(300, 300) 
     'Create a graphics object from the bitmap 
     Using G = Graphics.FromImage(Bmp) 
      'Paint the canvas white 
      G.Clear(Color.White) 
      'Set various modes to higher quality 
      G.InterpolationMode = Drawing2D.InterpolationMode.HighQualityBicubic 
      G.SmoothingMode = Drawing2D.SmoothingMode.AntiAlias 
      G.TextRenderingHint = Drawing.Text.TextRenderingHint.AntiAlias 

      'Create a font 
      Using F As New Font("Arial", 12) 
       'Create a brush 
       Using B As New SolidBrush(Color.Black) 
        'Draw some text 
        G.DrawString("Hello world", F, B, 20, 20) 
       End Using 
      End Using 
     End Using 

     'Save the file as a TIFF 
     Bmp.Save("c:\test.tiff", Imaging.ImageFormat.Tiff) 
    End Using 
+0

+1 좋은 점은 파일 크기에 큰 영향을 미칩니다. –

+0

그래서 점점 나아지고있는 것처럼 보이지만 여전히 최고는 아닙니다. 예를 들어, 2 개의 인쇄 된 문서 (한 비트 맵과 한 단어의 doc)를 정렬하면 비트 맵이 오래된 도트 매트릭스 프린터에서 인쇄 된 것처럼 보입니다. 각 문자는 작은 점으로 구성됩니다. 다른 제안? – ajl

+0

어떻게 인쇄하고 있습니까? –

0

나는이 방법을 사용하여 주위를 둘러 보면서 큰 차이를 만듭니다. 이들은 C#이지만, 필요한 것을 볼 수 있습니다. 죄송합니다. @durilai 당신이 인쇄 할 거라면 해상도를 걷어 할 수 있습니다 말과 함께

graphics.CompositingQuality = System.Drawing.Drawing2D.CompositingQuality.HighSpeed; 
    graphics.TextRenderingHint = TextRenderingHint.AntiAlias; 
+0

다소 좋지만 구부러진 글꼴은 여전히 ​​매우 어둡습니다. – ajl

+0

확인해보십시오. 글꼴을 사용하고있는 것을 보지 못했습니다. –

+0

위와 같은 설명 - 그래서 점점 나아지고있는 것처럼 보이지만 여전히 최고는 아닙니다. 예를 들어, 2 개의 인쇄 된 문서 (한 비트 맵과 한 단어의 doc)를 정렬하면 비트 맵이 오래된 도트 매트릭스 프린터에서 인쇄 된 것처럼 보입니다. 각 문자는 작은 점으로 구성됩니다. 다른 제안? – ajl

관련 문제