博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
C# GDI+绘制一维条码打印模糊的解决办法
阅读量:6406 次
发布时间:2019-06-23

本文共 2159 字,大约阅读时间需要 7 分钟。

最近遇到使用zxing生成的一维条码打印出来的条码图形很模糊根本识别不了。其实原因只有一句话: bitmap没有直接使用PrintDocument的Graphics画布进行绘制,而是中间处理了一下外部传过来一个图片,这个图片看起来很成像质量很好,但其实是一个彩色图片,一维条码是由黑白两种颜色组成的,没有灰度是两种纯色。这样打印出来的图片看起来有毛刺,直线不连续了。解决方法是减少中间环节直接把zxing生成的bitmap对象使用"PrintDocument的Graphics画布"绘制。PrintDocument的Graphics和Bitmap的Graphics要是同一个对象。

 

记录一下,zxing生成黑白图片的办法:

Dictionary
hintMap = new Dictionary
(); //设置编码 hintMap.Add(EncodeHintType.CHARACTER_SET, "UTF-8"); // Now with zxing version 3.2.1 you could change border size (white // border size to just 1) //设置间距 hintMap.Add(EncodeHintType.MARGIN, 0); //设置纠错级别 hintMap.Add(EncodeHintType.ERROR_CORRECTION, ErrorCorrectionLevel.L); QRCodeWriter qrCodeWriter = new QRCodeWriter(); //ZXing.MultiFormatWriter qrCodeWriter = new ZXing.MultiFormatWriter();//new QRCodeWriter(); //BitMatrix 根据其需要输出的参数,和设置条件等新建BitMatrix对象 BitMatrix byteMatrix = qrCodeWriter.encode(value, BarcodeFormat.QR_CODE, width, height, hintMap); var imgInfo = new Bitmap(width, height); for (int x = 0; x < byteMatrix.Width; x++) { for (int y = 0; y < byteMatrix.Width; y++) { if (byteMatrix[y, x]) { if (graphics != null) graphics.FillRectangle(Brushes.Black, x + viewX, y + viewY, 1, 1); imgInfo.SetPixel(x, y, Color.Black); } else { if (graphics != null) graphics.FillRectangle(Brushes.White, x + viewX, y + viewY, 1, 1); imgInfo.SetPixel(x, y, Color.White); } } }

BitMatrix是zxing将字符Encode成条码图形的一种返回值类型,是条码图形的矩阵表示方式。转换成bitmap时就是需要每个像素重绘一遍。这样生成的图形就是黑白两种颜色的。

转载地址:http://sdxea.baihongyu.com/

你可能感兴趣的文章
Android 滑动效果入门篇(二)—— Gallery
查看>>
Revit二次开发示例:DesignOptions
查看>>
Entity Framework 系统约定配置
查看>>
优秀设计:纹理在网页设计中的20个应用示例
查看>>
C++ 关键字 explicit, export, mutable
查看>>
生成指定范围的一组随机数并求平均值
查看>>
android语音识别方法
查看>>
File Operations in Android NDK(转)
查看>>
如何将kux格式的视频转换成我们常用的MP4格式
查看>>
[sublime系列文章] sublime text 3插件配置说明
查看>>
学习 PixiJS — 碰撞检测
查看>>
Vue 基础篇
查看>>
JavaScript:函数防抖与函数节流
查看>>
关于区间贪心的补全
查看>>
架构设计步骤
查看>>
自定义元素探秘及构建可复用组件最佳实践
查看>>
区块链是一个公共数据库,要放在一个块内
查看>>
Jenkins 用户文档(目录)
查看>>
系统常见指标
查看>>
使用crond构建linux定时任务及日志查看
查看>>