【小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,自己控制并添加相关扫码指南 ...
随机推荐
- js获取file控件的完整路径(上传图片预览)
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding= ...
- JMeter通过自定义jar调用和BeanShell源码
自定义jar包引用 原始java代码,代码的作用的是根据指定的字符串,生成执行长度的随机字符串 package com; import java.util.Random; public class r ...
- 如何查找物理cpu,cpu核心和逻辑cpu的数量
环境 Red Hat Enterprise Linux 4 Red Hat Enterprise Linux 5 Red Hat Enterprise Linux 6 Red Hat Enterpri ...
- 分解数据表(将一个datatable按数据量分隔成多个table)
/// <summary> /// 分解数据表 /// </summary> /// <param name="originalTab">需要分 ...
- IDEA创建lo4j模板
复制文字到文本框中: log4j.rootLogger=DEBUG,stdout log4j.logger.org.mybatis=DEBUG log4j.appender.stdout=org.ap ...
- java定时任务以及Spring使用Quartz调度器执行定时任务
java下的java.util.Timer中类可以实现定时执行任务的执行: 如:让任务立即执行,每隔1s循环执行一次 public class TimerClass { public static v ...
- 如何让你的数据有null
2018-11-13 09:25:17 如何让你的数据有null 返回时null属性不显示: String str = JSONObject.toJSONString(obj); 返回为null属 ...
- 【python】异步IO
No1: 协程看上去也是子程序,但执行过程中,在子程序内部可中断,然后转而执行别的子程序,在适当的时候再返回来接着执行. 优势: 1.最大的优势就是协程极高的执行效率.因为子程序切换不是线程切换,而是 ...
- POJ 2418 Hardwood Species 【Trie树】
<题目链接> 题目大意: 给你一堆字符串,让你按字典序输出他们出现的频率. 解题分析: 首先,这是Trie数词频统计的题目,以Trie树的边储存字母,节点存储以该节点结尾的链所代表的字符串 ...
- shell几种字符串加密解密的方法
第一种:[ Python 与 Bash Shell 的结合 ]这个命令会让你输入一个字符串,然后会再输出一串加密了的数字. 加密代码[照直输入]:python -c 'print reduce(lam ...