打印的条形码不清晰(WPF)

5
我需要在我的应用程序中添加条形码打印模块,但是无法正确地打印条形码。看起来它的分辨率太低了。 我正在使用Zen Barcode。如您所见,附加的照片中,顶部的条形码是从打印机软件中打印出来的,证明打印机没有问题,底部的图片是从我的代码中打印出来的:

[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


你是否在任何地方设置了 SnapToDevicePixels - Bradley Uffner
我在图像上使用它,也尝试在网格上使用。 - arti
你尝试过将条形码的实际大小传递给CreateBitmapSourceFromHBitmap而不是Int32Rect.Empty吗? - Bradley Uffner
1
尝试在图像 <Image RenderOptions.BitmapScalingMode="LowQuality"/> 上设置 BitmapScalingMode 和/或 EdgeMode。在这种情况下,您可能希望禁用抗锯齿。 - dkozl
1
不要使用Zen Barcode,尝试使用条形码字体。您可以在非常高的分辨率下将文本“写入”图像,并且无论您想要多大,它都会非常清晰。 - Moon
1个回答

0

根据Don的建议,我使用了条形码字体,打印更容易且质量更高!我正在使用IDAutomation


你是怎么解决那个问题的?能分享一下吗!现在我也遇到了麻烦。我正在使用以下代码:e.Graphics.DrawString("25 characters", font, brush, 0, 0),但结果和你的一样。任何条形码扫描器都无法扫描。 - Ma'ruf
仅使用该字体,但记住在 * 之间放置代码,它将起作用。 - arti
我已经使用它打印得很好,但无法扫描 :(。最大字符数为28,热敏打印机分辨率为203 DPI。 - Ma'ruf

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接