wpf打印条形码锯齿的问题

我是做前端的,(lll¬ω¬)!!!,由于.net的工程师离职,遗留下来一个问题,就是wpf打印条形码的时候,出现锯齿的现象。
我也不清楚如何解决,请教wpf的大神,帮忙看下!!!小弟感激不尽。打印机是TSC的
图片说明

下面是.xmal里面的内容,打印的主要内容:

 <Grid>
        <Grid Name="grdLabel" Width="840" Height="260" >
            <Grid.RowDefinitions>
                <RowDefinition Height="0*" />
                <RowDefinition Height="23*" />
                <RowDefinition Height="2*" />
                <RowDefinition Height="5*" />
                <RowDefinition Height="4*" />
                <RowDefinition Height="5*" />
                <RowDefinition Height="5*" />
                <RowDefinition Height="5*" />
                <RowDefinition Height="6*" />
            </Grid.RowDefinitions>
            <Grid.ColumnDefinitions>
                <ColumnDefinition Width="0*"/>
                <ColumnDefinition Width="33*"/>
                <ColumnDefinition Width="51*"/>
            </Grid.ColumnDefinitions>

            <Image Grid.Row="1" Grid.Column="1"  Name="imgSN" HorizontalAlignment="Left" Stretch="Uniform" UseLayoutRounding="False"/>
            <StackPanel Orientation="Horizontal" Grid.Row="4" Grid.Column="1" Margin="15,0,0,0">
                <TextBlock Margin="1,0,0,0" FontSize="18" VerticalAlignment="Bottom" Text="产品序列号:" Grid.Column="1" FontWeight="Bold"/>
                <TextBlock Name="tbLabelSN" FontSize="18" VerticalAlignment="Bottom" Grid.Column="1" FontWeight="Bold"/>
            </StackPanel>
            <StackPanel Orientation="Horizontal" Grid.Row="5" Grid.Column="1" Margin="15,0,0,0">
                <TextBlock FontSize="18" VerticalAlignment="Bottom" Text="颜色:" Grid.Column="1" FontWeight="Bold"/>
                <TextBlock FontSize="18" VerticalAlignment="Bottom" Text="{Binding Path=Model.Color.Color,Mode=OneWay}" Grid.Column="3" FontWeight="Bold"/>
            </StackPanel>
            <StackPanel Orientation="Horizontal" Grid.Row="6" Grid.Column="1" Margin="15,0,0,0">
                <TextBlock FontSize="18" VerticalAlignment="Top" Text="型号:" Grid.Column="0" FontWeight="Bold"/>
                <TextBlock FontSize="18" VerticalAlignment="Top" Text="{Binding Path=Model.Name,Mode=OneWay}" Grid.Column="1" FontWeight="Bold"/>

            </StackPanel>
            <StackPanel Orientation="Horizontal" Grid.Row="7" Grid.Column="1" Margin="15,0,0,0">
                <TextBlock FontSize="18" VerticalAlignment="Top" HorizontalAlignment="Right" Text="生产日期:" Grid.Column="2" FontWeight="Bold"/>
                <TextBlock FontSize="18" VerticalAlignment="Top" Text="{Binding Path=BatchDate}" Grid.Column="3" FontWeight="Bold"/>
            </StackPanel>
        </Grid>

下面是打印标签的代码:

             void PrintLabel(string sn)
    {
        System.Drawing.Bitmap m_Bitmap = new System.Drawing.Bitmap(Elecnode.GeneratorBarcode(sn),276*6,94*6);
        //m_Bitmap.Save("./lalalala.png");
        //m_Bitmap.Save("./nidayue.png");
        IntPtr ip = m_Bitmap.GetHbitmap();
        BitmapSource bitmapSource = System.Windows.Interop.Imaging.CreateBitmapSourceFromHBitmap(
            ip, IntPtr.Zero, Int32Rect.Empty,
            System.Windows.Media.Imaging.BitmapSizeOptions.FromEmptyOptions());


        DeleteObject(ip);
        imgSN.Source = bitmapSource;
        tbLabelSN.Text = sn;
        grdLabel.UpdateLayout();

        PrintDialog printDialog = new System.Windows.Controls.PrintDialog();
        //var renderTarget = new RenderTargetBitmap((int)grdLabel.Width, (int)grdLabel.Height, 600, 600, PixelFormats.Default);

        var renderTarget = new RenderTargetBitmap(940, 260, 310, 320, PixelFormats.Default);
        renderTarget.SetValue(RenderOptions.BitmapScalingModeProperty, BitmapScalingMode.NearestNeighbor);
        printDialog.PrintTicket = new PrintTicket();
        printDialog.PrintTicket.PageMediaSize = new PageMediaSize(renderTarget.Width, renderTarget.Height);
        var capabilities = printDialog.PrintQueue.GetPrintCapabilities(printDialog.PrintTicket);//0.33502812148481437  0.31995154451847363  0.1599030890369473
        var scale = Math.Max(capabilities.PageImageableArea.ExtentWidth / grdLabel.Width, capabilities.PageImageableArea.ExtentHeight / grdLabel.Height);
        grdLabel.LayoutTransform = new ScaleTransform(scale, scale);
        var sz = new Size(capabilities.PageImageableArea.ExtentWidth, capabilities.PageImageableArea.ExtentHeight);
        grdLabel.Measure(sz);
        grdLabel.Arrange(new Rect(new Point(0, 0), sz));

        printDialog.PrintVisual(grdLabel, "标签打印");

        //isFirstPrint = false;
    }

1个回答

首先你应该看看生成的条码这个位图有没有锯齿,就是这句代码:
System.Drawing.Bitmap m_Bitmap = new System.Drawing.Bitmap(Elecnode.GeneratorBarcode(sn),276*6,94*6);
在这句代码后面先把这个m_Bitmap保存下来看看,这样保存:
Bitmap.Save(m_Bitmap,"temp.bmp"),
然后你打开这个temp.bmp看看是不是有锯齿,如果这个位图就有锯齿的话问题就在Elecnode.GeneratorBarcode(sn)这句生成位图的代码中了,
如果没有锯齿,那么你要打开这个位图看看他存储位图的格式是不是和PixelFormats.Default默认的格式一致,如果不一致就把这个PixelFormats.Default改成和那个位图一致

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
C# wpf条形码打印
C# wpf条形码打印C# wpf条形码打印C# wpf条形码打印C# wpf条形码打印C# wpf条形码打印C# wpf条形码打印C# wpf条形码打印C# wpf条形码打印
条形码 打印 条形码 打印
条形码打印条形码打印 条形码打印 条形码打印 条形码打印 条形码打印
打印图片锯齿问题
在正常情况下打印的图片是正常的 没有锯齿 代码如下rn[code=csharp]rn Rectangle destRect = new Rectangle(0, 0, 100,100);rn e.Graphics.SmoothingMode = SmoothingMode.HighQuality;rn e.Graphics.DrawImage(myimg, destRect, 0, 0, myimg.Width, myimg.Height, System.Drawing.GraphicsUnit.Pixel);rn[/code]rnrn但是如果做一个旋转 打印出来的图片马上就有锯齿 rn[code=csharp]rnrn Matrix m=new Matrix();rn m.RotateAt(180f, 50,50);rn Rectangle destRect = new Rectangle(0, 0, 100,100);rn e.Graphics.Transform = m;rn e.Graphics.SmoothingMode = SmoothingMode.HighQuality;rn e.Graphics.DrawImage(myimg, destRect, 0, 0, myimg.Width, myimg.Height, System.Drawing.GraphicsUnit.Pixel);rn[/code]
条形码的打印,pdf打印条形码
条形码的打印效果如下图:   想实现上面的这种打印输出(内容可以自己设定),大概需要三大步。   第一步:选择jar包(其实实现条形码可以有多个方式,这里讲述下我最熟悉的);采用barcode4j这个jar包。 第二步:采用barcode4j来生成image流,即生成条形码。这个是核心步骤。下面我就来具体来说说这个步骤。废话不多说,先上传  这个方法吧。(可能写的不够简洁,但能实现基...
WPF 打印 一维码(条形码)图片。
有没有可以参考的源代码?rn我需要的是可以打印的一维码图片。。rn不是字符串。也不是其他格式的。rn我知道可以转换。但是请给出转换成图片的方法。
Graphics 绘制条形码 打印条码模糊文本有锯齿
Graphics 绘制条形码 打印条码模糊文本有锯齿
关于打印条形码的问题
我想用vb做一个,打印出二维条码的程序,不知到哪位有原代码,谢谢
fastReport条形码打印问题
为什么我在设计的时候打印预览能显示条形码,但是程序运行的时候却要报错?(EclassNotFound with messge Tfrbarcodeview)运行之后打印预览里面条形码看不到了???
关于条形码的打印问题
在DELPHI中如何打印条形码啊
asp 条形码打印问题
以下是asp自动生成条码,但是无法打印,打印就显示空白,网上所说的设置 工具-internet选项-高级-打印背景颜色和图像,都设置了,结果还是不行,有哪位做过类似功能,如果能生成一个图片就肯定能打印了!rnrnrn rn rn rn Asp生成条形码rn rnrnrnrn<%rn'条形码生成程序rnfunction haiwaocde(zfstr)rn zf = zfstrrn zf = replace(zf,"0","_|_|__||_||_|")rn zf = replace(zf,"1","_||_|__|_|_||")rn zf = replace(zf,"2","_|_||__|_|_||")rn zf = replace(zf,"3","_||_||__|_|_|")rn zf = replace(zf,"4","_|_|__||_|_||")rn zf = replace(zf,"5","_||_|__||_|_|")rn zf = replace(zf,"7","_|_|__|_||_||")rn zf = replace(zf,"6","_|_||__||_|_|")rn zf = replace(zf,"8","_||_|__|_||_|")rn zf = replace(zf,"9","_|_||__|_||_|")rn zf = replace(zf,"a","_||_|_|__|_||")rn zf = replace(zf,"b","_|_||_|__|_||")rn zf = replace(zf,"c","_||_||_|__|_|")rn zf = replace(zf,"d","_|_|_||__|_||")rn zf = replace(zf,"e","_||_|_||__|_|")rn zf = replace(zf,"f","_|_||_||__|_|")rn zf = replace(zf,"g","_|_|_|__||_||")rn zf = replace(zf,"h","_||_|_|__||_|")rn zf = replace(zf,"i","_|_||_|__||_|")rn zf = replace(zf,"j","_|_|_||__||_|")rn zf = replace(zf,"k","_||_|_|_|__||")rn zf = replace(zf,"l","_|_||_|_|__||")rn zf = replace(zf,"m","_||_||_|_|__|")rn zf = replace(zf,"n","_|_|_||_|__||")rn zf = replace(zf,"o","_||_|_||_|__|")rn zf = replace(zf,"p","_|_||_||_|__|")rn zf = replace(zf,"r","_||_|_|_||__|")rn zf = replace(zf,"q","_|_|_|_||__||")rn zf = replace(zf,"s","_|_||_|_||__|")rn zf = replace(zf,"t","_|_|_||_||__|")rn zf = replace(zf,"u","_||__|_|_|_||")rn zf = replace(zf,"v","_|__||_|_|_||")rn zf = replace(zf,"w","_||__||_|_|_|")rn zf = replace(zf,"x","_|__|_||_|_||")rn zf = replace(zf,"y","_||__|_||_|_|")rn zf = replace(zf,"z","_|__||_||_|_|")rn zf = replace(zf,"-","_|__|_|_||_||")rn zf = replace(zf,"*","_|__|_||_||_|")rn zf = replace(zf,"/","_|__|__|_|__|")rn zf = replace(zf,"%","_|_|__|__|__|")rn zf = replace(zf,"+","_|__|_|__|__|")rn zf = replace(zf,".","_||__|_|_||_|")rn rn haiwaocde = zfrnend functionrncode_H = 52rncode_W = 2rnfunction dragcode(ccode)rn c = ccodern c = replace(c,"_","")rn c = replace(c,"|","")rn dragcode = crnend functionrnfunction dragtext(ccode)rn c = ccodern dragtext = ""rn for i=1 to len(c)rn dragtext = dragtext&""&mid(c,i,1)&""rn nextrn dragtext = dragtextrnend functionrnrnFunction CheckExp(patrn,str)rnSet regEx=New RegExprnregEx.Pattern=patrnrnregEx.IgnoreCase=truernregEx.Global=TruernCheckExp = regEx.test(str) rnEnd Functionrnrnrncode = request("c")rnrnif code = "" thenrn code = "8888888888"rnelsern if Checkexp("^[abcdefghijklmnopqrstuvwxyz1234567890\+\-\*\/\%\$\.]*$",code) thenrn code = codern elsern code = "8888888888"rn errstr = " 含有非法字符 "rn end ifrnend ifrnocode = coderncode = lcase(code)rn%>rn 合法字符:ABCDEFGHIJKLMNOPQRSTUVWXYZ 1234567890 + - * / % $ . " size="25" maxlength="15"> rn rn rn rn rn <%=dragcode(haiwaocde(code))%>rn rn rn <%=(ocode)%>rn rn rn rnrn<%=errstr%>rnrn
一个条形码打印的问题
原来用word的邮件合并功能读取access数据库的内容并可以打印。rnrn现在要增加一个能打印条形码的功能,原来的word邮件合并的方案还能用吗?不能用的话,.net框架能提供一些什么帮助?
关于条形码打印的问题
近日公司要用VB或VC编一个条形码打印(最好还能有预览模式)的程序,条形码打印机名称为DATAMAX。不知哪位大虾有好的主意,谢谢。
C#打印条形码问题
我这是一个winform程序,使用barcodeControl用code128类型显示的条形码,但是不知道怎么打印,看网上说引入code128字体,我也引入了,但是还是不能打出来,在这个form中label我用rn e.Graphics.DrawString(this.labelDz.Text,charFont1, brush, 250, 320, new StringFormat());rn打印的 这些都正常。请教各位我该怎么将条形码打出来并且能用扫枪扫。网上说把barcodeControl转换成图形打印,怎么转,怎么打!菜鸟一个,望大家帮忙!
关于打印条形码的问题!
我用VB用3 of 9 Barcode字体打印条形码,条形码长度为17个字符,打印出来条形码很短,比较难看,请问如何更好地控制条形码的长度和大小。rnrn程序如下:rn PrintVaule="ABC1234567890DEFG"rn Printer.FontName = "3 of 9 Barcode"rn Printer.FontSize = 17rn Printer.CurrentX = 300rn Printer.CurrentY = 200rn Printer.Print "*" + PrintVaule + "*"rn '打印条形码文本rn Printer.FontName = "黑体" rn Printer.FontSize = 13rn Printer.CurrentX = 450rn Printer.CurrentY = 300rn Printer.Print PrintVaulern
条形码打印问题
我的条形码是用 普通A4纸打的rn请问能识别码?
打印条形码问题
公司想做个项目,涉及到一些打印问题,打印的时候需要从条形码打印机里打印条形码,系统是用java(struts)写的,现在的的一种方案是写一个active控件,然后调用控件打印条形码,但是这种方法要编写active控件,我不知道打印机型号,对打印不是很了解,所以在想有没有现成的控件,或者说有没有其他方法,例如直接使用java或者js等来控制打印rn有思路的,有经验的请指点一下,谢谢
打印条形码的问题
在pb6.0中打印条形码EAN-13,用的字体有EanP36xTt,EanP72xTt,EanPwrP36xTt,EanPwrP72xTtrn但是打印出来后扫描枪不能识别,在数据前后都加了"!"但扫描枪不能识别,请问各位大虾,是我的字体没选对还是我的方法有问题。(我用code39码打印出来可以识别,前后加"*")rn另:分数不能可以再加,为什么我一次只能给100分
水晶报表打印条形码的问题
rn 这两天做了一个水晶报表打印条形码的功能,rnrn 可打印出来用扫描枪扫描不到. 我用的字体是code39 ,在网上找了几种code39类型的字体,试了都没用.rnrn 在数据库字体中两端都也加了*号,可还是扫描不到,,rnrn 还望指点....
条形码打印的问题!
高分求解条形码打印的思路!rn1.如何驱动条形码打印机?rn2.用office2000自带的msbcode9.ocx设计的话,如何打印多份条形码标签?rn
关于条形码打印问题
我程序直接调用code128.ttf的字体,输出的条形码,打印出来,扫描枪无法识别,不知道什么原因?rn在word中把一串数字改成该字体,也是打印后扫描枪无法识别
PB条形码打印问题
目前维护一个条码打印的项目,rn是用计算列做一个条形码字段rn计算列中输入的是 '!' + 字段 + '!'rn字体为code39的C39HrP24DhTtrnrn问了以前的维护人员说一定要用'!'把字段包起来才能打印的出来,但是我看网上都是说用'*',所以很迷惑.rn想问下,在PB中是不是起始符号'*' 要换变成'!',这样扫描枪才能扫的出来?
WPF 打印条形码出现虚线和锯齿是什么原因?(个别电脑出现)
各位大神,小弟遇到了一个问题,WPF开发的小软件,条形码是用ZXING生成的,生成后加载到界面上Visual控件,然后WPF直接打印控件,在界面上无锯齿,但在个别电脑上,打印出来会出现虚线和锯齿,是什么原因呢?,请大神帮忙解答。rn[img=https://img-bbs.csdn.net/upload/201907/28/1564296653_27105.png][/img]
39-打印锯齿矩阵
问题描述: 锯齿矩阵是指每一行包含的元素个数不相同的矩阵,比如: 13 5 2 6 122 3 431 6 2 7 读入若干对整数 (x,y)(x,y),表示在第 xx 行的末尾加上一个元素 yy。输出最终的锯齿数组。初始时矩阵为空。 输入格式 第一行输入两个整数 n,m(1 \leq n,m \leq 10000)n,m(1≤n,m≤10000),其中 nn 表示锯齿数组的
计蒜客打印锯齿矩阵
1.问题描述: 2.算法分析: 因为发现数组的长度不是固定的,而是可变的,所以我们不能使用静态数组,我们可以使用动态数组vector来做。先确定使用的数据结构vector 然后就是先对数组赋值,将比如上题将12个元素赋值, 然后有一个要注意的点,就是如果某一行都没有数据,那么,直接换行空一行出来。 当没有数据的时候vector数组的长度必然为0 再依次打印即可。 3.源代码分析: #...
打印锯齿矩阵
锯齿矩阵是指每一行包含的元素个数不相同的矩阵,比如: 1 3 5 2 6 1 2 2 3 4 3 1 6 2 7 读入若干对整数 (x,y),表示在第 xx 行的末尾加上一个元素 y。输出最终的锯齿数组。初始时矩阵为空。输入格式第一行输入两个整数 n,m(1≤n,m≤10000),其中 nn 表示锯齿数组的行数,mm 表示插入的元素总数。接下来一共 mm 行,每行两个整数 x,y(1≤
条形码打印
条形码智能扫描与打印,能够自动生成条形码。数据库支持SQL2000
条形码打印?
在VC如何利用微软的条形码控件msbarcode9.ocx生成128条形码,然后在单文档视图结构打印出来,条形码的内容在数据库里动态查询。rn急,急,急。愿意奉献所有分数,请各位指导。
打印条形码示例程序打印条形码示例程序
打印条形码示例程序打印条形码示例程序打印条形码示例程序
锯齿数组打印杨辉三角形
这个方法可以在执行过程中有效地节约内存和CPU的使用率!用的是数组中的锯齿数组!
打印锯齿矩阵 - 计蒜客
锯齿矩阵是指每一行包含的元素个数不相同的矩阵,比如: 3 5 2 6 1 2 3 4 1 6 2 7 读入若干对整数 (x,y)(x,y)(x,y),表示在第 xxx 行的末尾加上一个元素 yyy。 输出最终的锯齿数组。初始时矩阵为空。 输入格式 第一行输入两个整数 n,m(1≤n,m≤10000)n,m(1 \leq n,m \leq 10000)n,m(1≤n,m≤10000),其中 nnn...
条形码的打印
怎么通过PDA接受数据啊???并且进行响应啊??????????????????
打印条形码
c# 128 打印条形码 包括导出Execl 当然也有存储数据
条形码 打印
[img=https://img-bbs.csdn.net/upload/201306/04/1370329180_161638.jpg][/img] 我想将程序生成的 条形码 打印出来 ,并且可以打印多条同样的条形码, 比如说 这张条形码可以同时打印三张,各位大侠 赐教了.
打印条形码!
本人想做一个打印条形码的程序rnrn想问问大家,用什么方法实现更简单,更方便呢?
相关热词 c#检测非法字符 c#双屏截图 c#中怎么关闭线程 c# 显示服务器上的图片 api嵌入窗口 c# c# 控制网页 c# encrypt c#微信网页版登录 c# login 居中 c# 考试软件