2010-03-19 16 views
5

Aplikacja Vb.Net tworzy bitmapę od zera i konwertuje na tiff lub wysyła je do drukarki. W obu przypadkach jakość obrazu (w tym przypadku czcionka) wcale nie jest dobra. Poniższy przykładowy kod tworzy obiekt graficzny, którego używam do zapisu obrazu.Podczas tworzenia od zera obrazu bitmapowego w VB.Net, jakość cuchnie?

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

Czy to tylko wygenerowana tiff wygląda źle, czy też masz ten sam problem z bitmapą (bmp)? –

+0

Tak, jakość cuchnie bez względu na to, jaki typ utworzę - bmp, tiff, jpg, itp. – ajl

Odpowiedz

10

Wraz z tym, co powiedział @durilai warto kopać się rozdzielczość jeśli będzie drukować. .Net używa rozdzielczości systemowej, która zwykle wynosi 96 DPI, ale drukarki mogą pracować z plikami o rozdzielczości 300 DPI lub większej.

'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 Dobry punkt, znacznie wpłynie na rozmiar pliku. –

+0

Wygląda na to, że będzie coraz lepiej, ale nadal nie jest najlepszy. Na przykład, kiedy ustawię 2 drukowane dokumenty - jedną bitmapę i jedno słowo doc - bitmapa wygląda tak, jak wydrukowana ze starej drukarki igłowej - każda postać składa się z małych kropek. Jakieś inne sugestie? – ajl

+0

W jaki sposób drukujesz? –

0

Użyłem tych metod, bawię się z nimi, które czynią OGROMNĄ różnicę. To jest C#, ale widać, co jest potrzebne. Przepraszam.

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

użyłem tych metod dla czcionek:

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

Jest nieco lepiej, ale zakrzywione czcionki nadal wyglądają naprawdę źle. – ajl

+0

Sprawdź mój dodatek, nie widziałem, że robiłeś czcionki. –

+0

Taki sam komentarz jak powyżej - Wygląda na to, że będzie coraz lepiej, ale nadal nie jest najlepszy. Na przykład, kiedy ustawię 2 drukowane dokumenty - jedną bitmapę i jedno słowo doc - bitmapa wygląda tak, jak wydrukowana ze starej drukarki igłowej - każda postać składa się z małych kropek. Jakieś inne sugestie? – ajl

Powiązane problemy