【小y设计】二维码条形码打印编辑器
条码打印,价格标签打印,需要对打印进行排版,于是设计了一个简单的编辑器
支持条码二维码打印进行编辑排版,支持文字、图片、条码、二维码、直线,能自由拖拉,删除,并可保存为模版。 界面如下 (下载Demo 体验):

左边为参数设置,右边为可视编辑区,支持自由拖拉,按Del键删除层。
首先点击左边最上面的纸张设置,设定纸张大小。可以直接在下拉框中选择常用的纸张大小,也可以自定义尺寸。设置好后点击“保存设置"按钮,则编辑区显示相应尺寸的纸张。然后在纸张上自由插入条码、图片、文字、直线。

支持简单的时间变量,比如文字内容里插入了”{当前时间}“变量,则当触发打印操作的时候,再取当前时间,并替换该变量:

程序源码截图:

关键技术点:
1.实现如Photoshop类似的图层概念
刚开始准备使用GDI+绘制图层,然后用鼠标定位当前选中的对象,后来改进成用自定义控件实现,在控件上画对象,只需要对控件添加统一的鼠标事件就可以实现图层移动、删除等操作。
2.绘制条码、二维码,涉及中文问题、条码编码方式问题
使用的开源二维码库zxing,我之前的其他文章也有详细介绍,不赘述。
//条码类型
BarcodeFormat myBarcodeFormat;
EncodingOptions myEncoding;
if (this.CodeType == ) //二维码
{
myBarcodeFormat = BarcodeFormat.QR_CODE;
myEncoding = new QrCodeEncodingOptions()
{
Height = this.Height,
Width = this.Width,
Margin = ,
CharacterSet="UTF-8",
PureBarcode = !this.IsShowText
};
}
else //条形码
{
myBarcodeFormat = BarcodeFormat.CODE_128;
myEncoding = new EncodingOptions()
{
Height = this.Height,
Width = this.Width,
Margin = ,
PureBarcode = !this.IsShowText
};
}
//生成条码QrCodeEncodingOptions
BarcodeWriter writer = new BarcodeWriter
{
Format = myBarcodeFormat,
Options = myEncoding,
Renderer = (IBarcodeRenderer<Bitmap>)Activator.CreateInstance(typeof(BitmapRenderer))
}; Bitmap barImg= writer.Write(this.Content);
这里强调一点是,使用UTF-8编码防止中文乱码。其二,条码编码方式使用Code_128,支持任意ascii码。
【小y设计】二维码条形码打印编辑器的更多相关文章
- 使用IOS7原生API进行二维码条形码的扫描
使用IOS7原生API进行二维码条形码的扫描 IOS7之前,开发者进行扫码编程时,一般会借助第三方库.常用的是ZBarSDK,IOS7之后,系统的AVMetadataObject类中,为我们提供了解析 ...
- iOS雪花动画、音频图、新闻界面框架、2048游戏、二维码条形码扫码生成等源码
iOS精选源码 粒子雪花与烟花的动画 iOS 2048游戏 JHSoundWaveView - 简单地声波图.音波图 一个可快速集成的新闻详情界面框架,类似今日头条,腾讯新闻 二维码/条形码扫描及扫描 ...
- Java使用ZXing生成二维码条形码
一.下载Zxingjar包 本实例使用的是 zxing3.2.0的版本 下载地址 http://pan.baidu.com/s/1gdH7PzP 说明:本实例使用的3.2.0版本已经使用的java7 ...
- jquery.qrcode和jqprint的联合使用,实现html生成二维码并打印(中文也ok)
在公司的生产现场中,常常会在一些部品或设备上贴上二维码,用于扫描录入数据,免去手动输入的麻烦. 以前曾经做过winform的程序,生成二维码,并打印出来,使用的是zxing的类库, 但是如果二维码是附 ...
- 关于微信小程序获取二维码的踩坑记录
1.踩坑需求:获取小程序的二维码 2.踩坑接口: https://api.weixin.qq.com/wxa/getwxacode?access_token=ACCESS_TOKEN3 踩坑代码 pu ...
- c# zxing生成二维码和打印
生成二维码代码 asset=“要生成的字符串”: public static Bitmap CreateQRCode(string asset) { EncodingOptions options = ...
- 使用JS调用手机本地摄像头或者相册图片识别二维码/条形码
接着昨天的需求,不过这次不依赖微信,使用纯js唤醒手机本地摄像头或者选择手机相册图片,识别其中的二维码或者是条形码.昨天,我使用微信扫一扫识别,效果超棒的.不过如果依赖微信的话,又怎么实现呢,这里介绍 ...
- 微信小程序开发——获取小程序带参二维码全流程
前言: 想要获取微信小程序带参数二维码,如这种: 官方文档只说了获取小程序码和二维码的三种接口及调用(参考链接:https://developers.weixin.qq.com/miniprogram ...
- iOS- 详解如何使用ZBarSDK集成扫描二维码/条形码,点我!
1.前言 目前市场主流APP里,二维码/条形码集成主要分两种表现形式来集成: a. 一种是调用手机摄像头并打开系统照相机全屏去拍摄 b. 一种是自定义照相机视图的frame,自己控制并添加相关扫码指南 ...
随机推荐
- Newtonsoft.Json 高级用法
基本用法 Json.NET是支持序列化和反序列化DataTable,DataSet,Entity Framework和Entity的.下面分别举例说明序列化和反序列化. DataTable: //序列 ...
- day100-序列化组件
3 序列化组件 class BookSerializer(serializers.Serializer): title = serializers.CharField( max_length=32) ...
- zabbix通过自动发现tomcat应用端口监控连接数
192.168.10.98上 netstat -anp | wc -l netstat -anp|grep 8094 | grep ESTABLISHED | wc -l netstat -anp|g ...
- mongodb中投票节点作用
投票节点 并不含有 复制集中的数据集副本,且也 无法 升职为主节点.投票节点的存在是为了使复制集中的节点数量为奇数,这样保证在进行投票的时候不会出现票数相同的情况.如果添加了一个节点后,总节点数为偶数 ...
- gitlab之三: gitlab邮件通知的配置
参考 : https://www.cnblogs.com/lovelinux199075/p/9072265.html gitlab 添加新用户后,会自动发送邮件到填写的邮箱. 实验版本: 11. ...
- bitset里面一些函数的用法
- 页面滚动到指定class样式位置
var winTop =$(window).scrollTop(); var top = document.getElementsByClassName('is-danger')[0].getBoun ...
- Zookeeper常用命令行及API
一.Zookeeper常用命令行 1.启动zookeeper客户端(在启动zookeeper集群后启动进行调试) zkCli.sh 2.查看帮助.操作历史 help.history 3.查看当前Zno ...
- HDU 4768 Flyer【二分】||【异或】
<题目链接> <转载于 >>> > 题目链接: n个社团派发传单,有a,b,c三个参数,派发的规则是,派发给序号为a,a+c....a+k*c,序号要求是小 ...
- vue-cli@3.x之使用vue ui创建项目-来自一个战五渣的体验
1. 全局安装vue-cli yarn global add @vue/cli // 检查安装是否成功 vue -V // 3.2.2 2. 初始化 vue ui 执行命令 vue ui 2.1 该命 ...