2016-01-05 17 views
5

Potrzebuję modułu do drukowania kodów kreskowych w mojej aplikacji, ale nie mogę go znaleźć, jak poprawnie wydrukować kody kreskowe. Wygląda na to, że rozdzielczość jest zbyt niska. Używam Zen Barcode. Jak widać na załączonym zdjęciu, top kod kreskowy drukowany jest z oprogramowaniem drukarki, udowadniając, że drukarka jest ok, dolny obraz jest drukowany z mojego kodu:Kod kreskowy wydrukowany jest niewyraźny (WPF).

[WPF]

 <Grid x:Name="_printSerialBcode" Margin="9" Visibility="Visible"> 
      <Image x:Name="serial_bcode1" Height="20" VerticalAlignment="Top" HorizontalAlignment="Left" Margin="2"/> 
     </Grid> 

[C#]

private void printJob() 
    { 
     // use printer we need 
     SetDefaultPrinter("Brother QL-700"); 
     //draw barcodes 
     BarcodeDraw bc = BarcodeDrawFactory.Code128WithChecksum; 

     Bitmap serial_bitmap = (Bitmap)bc.Draw(serial, 20); 

     ImageConverter ic = new ImageConverter(); 

     //generate bitmap 
     serial_bcode1.Source = System.Windows.Interop.Imaging.CreateBitmapSourceFromHBitmap(serial_bitmap.GetHbitmap(), IntPtr.Zero, Int32Rect.Empty, BitmapSizeOptions.FromEmptyOptions()); 

     var dlg = new PrintDialog(); 

     //print main label 
     dlg.PrintTicket.CopyCount = 1; // number of copies 
     dlg.PrintTicket.PageOrientation = PageOrientation.Landscape; 
     dlg.PrintVisual(_printSerialBcode, "Barcode"); 

     //change default printer to original one 
     SetDefaultPrinter(defaultPrinter); 
    } 

Test barcodes

+0

Czy ustawiasz 'SnapToDevicePixels' w dowolnym miejscu? –

+0

Bez różnicy. używam go na obrazie, również próbowałem na siatce – arti

+0

Czy próbowałeś przekazać rzeczywisty rozmiar kodu kreskowego do 'CreateBitmapSourceFromHBitmap' zamiast' Int32Rect.Empty'? –

Odpowiedz

0

zalecane przez Don użyłem czcionki kodów kreskowych, znacznie łatwiej i wysoka jakość druku! Używam IDAutomation