资源简介
Qt 5.7 实现生成Code39条码,独立的类可直接移植,生成的图片参数可设置,完整的Demo程序,直接编译可运行
代码片段和文件信息
/*****************************
生成Code39条码
By Jeff.Ma 2018-08-28
******************************/
#include “code39.h“
Code39::Code39(QString BarCode QString SavePath int fontSize)
{
barcode = BarCode;
path = SavePath;
m_barHigh = 40;
m_barWidth = 2;
m_fontSize = fontSize;
m_includeSN = false;
InitMap();
//start();
}
void Code39::start(int barWidth int high bool sn)
{
m_includeSN = sn;
m_barHigh = high;
m_barWidth = barWidth;
//校验字符是否合法
QString com=“0123456789ABCDEFGHIJKLMNOPQISTUVWXWZ+-*/%$. “;//合法字符模版
for(int i=0;i {
if(!com.contains(barcode.at(i)))
{
QMessageBox msg;
msg.setText(QStringLiteral(“条形码字符不合法!\n合法字符:A~Z 0~9 +-/%$[空格]“));
msg.exec();
return;
}
}
draw(CodeBinary(barcode)barcode);
}
void Code39::draw(QString BinaryNumQString barcode)
{
int maxWidth;
//预留10px的左右空白;
maxWidth = m_barWidth * BinaryNum.size() + 5;
//计算条线宽度时,精度丢失造成条码右边空白,进行右移居中
int move=(maxWidth - m_barWidth * BinaryNum.size()) / 2;
QSize size(maxWidth m_barHigh + m_fontSize + 5);
QImage image(size QImage::Format_ARGB32);
image.fill(qRgba(255 255 255 0));
//QBitmap bmp(maxWidthm_barHigh+m_fontSize);
QPainter painter(&image);
QPen whiteblack;
// painter.setRenderHint(QPainter::Antialiasingtrue);//弧线圆润
white.setColor(QColor(255255255));
black.setColor(QColor(000));
white.setWidth(m_barWidth);
black.setWidth(m_barWidth);
//背景充填白色
painter.setPen(white);
painter.drawRect(0 0 maxWidth m_barHigh + m_fontSize);
//画线
for(int i=0;i {
if(BinaryNum.at(i)==‘1‘) painter.setPen(black);
else painter.setPen(white);
painter.drawLine(i*m_barWidth+m_barWidth/2+move0i*m_barWidth+m_barWidth/2+movem_barHigh);
}
qDebug()< //添加底部条形码字符
painter.setPen(black);
painter.setRenderHint(QPainter::Antialiasingtrue);
painter.setRenderHint(QPainter::TextAntialiasingtrue);
painter.setRenderHint(QPainter::HighQualityAntialiasingtrue);
QFont font;
// font.setFamily(“宋体“);
font.setPixelSize(m_fontSize);
font.setWeight(QFont::ExtraLight);
painter.setFont(font);
if(m_includeSN == false)
{
painter.drawText(5 m_barHigh + 5 maxWidth m_fontSize Qt::AlignCenter barcode);
}
else
{
painter.drawText(5 m_barHigh + 5 maxWidth m_fontSize Qt::AlignCenter “S/N:“ + barcode);
}
image.save(path + barcode + “.bmp“);
}
QString Code39::CodeBinary(QString barcode)
{
barcode=“*“+barcode+“*“;
QString str=““;
for(int i=0;i {
str+=map[barcode.at(i)]+“0“;//每个字符的二进制逻辑码之间,用“0”隔开(加一条白线)
}
return str;
}
void Code39::InitMap(
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 63210 2020-03-18 22:03 DemoCode39\app\CODE39-00001.bmp
文件 2045579 2020-03-18 22:02 DemoCode39\app\DemoCode39.exe
文件 5055 2020-03-18 21:53 DemoCode39\code39.cpp
文件 753 2020-03-18 21:46 DemoCode39\code39.h
文件 1162 2020-03-18 21:52 DemoCode39\democode39.cpp
文件 384 2020-03-18 21:14 DemoCode39\democode39.h
文件 1081 2020-03-18 21:14 DemoCode39\DemoCode39.pro
文件 23454 2020-03-18 20:59 DemoCode39\DemoCode39.pro.user
文件 4340 2020-03-18 22:02 DemoCode39\democode39.ui
文件 183 2020-03-18 20:59 DemoCode39\main.cpp
目录 0 2020-03-18 22:02 DemoCode39\app
目录 0 2020-03-18 22:02 DemoCode39
----------- --------- ---------- ----- ----
2145201 12
相关资源
- qt_ffmpeg_mp4_export_and_import.zip
- QT5.5入门与项目实战
- Huffman Compress 霍夫曼编码 压缩 解压缩
- 基于QT的黑白棋游戏设计和实现
- Qt写的连连看小游戏
- QTranslate_6.7.2.7z
- Qt基于FFmpeg播放本地 H.264H264文件
- QT编的MP3播放器
- linux系统的二级文件系统(QT实现了简
- QT生成DLL库文件的方法和使用方法详解
- QT+opencv+OCR 身份证号码,银行卡号识别
- Qt实现的简单的中国象棋程序
- Qt时钟Demo,在原来基础上添加了秒针
- 基于Qt和opencv的身份证号码识别系统
- 基于FFmpeg4.0.2的AAC编码器
- Qt写的Windows下屏幕录制程序源码
- QT旅游攻略软件程序源代码
- mp4_play.zip
- ffmpeg+qt的简单播放器
- MyPeppa_Release_V1.0.rar
- 从零开始学习音视频编程技术十二 录
- Qt 日历可显示阴历生宵和时钟基于Q
- 计算机网络打作业实现QQ.zip
- 基于qt实现的简易象棋游戏
- 基于ARM9的远程视频监控系统
- 基于QT的音乐播放器源代码及详细教程
- 有关Qt的二十篇中文论文
- 使用Qt编写的视频监控系统支持Qt4-Q
- 用QT读取Excel文件并将数据在界面上动
- QT使用Cypress FX3 USB库代码
评论
共有 条评论