条形码(barcode)code128生成代码 很简单 多些这位兄弟https://bbs.csdn.net/topics/350125614

下面是我的DEMO 直接放到VS2005下面编译即可

#include <ctime>
#include <string>
#include <map>
#include <vector>
using namespace std;
#include <windows.h>
#include <atlimage.h>
map<int,string> g_codemap;
bool FillCodeMap(void);
bool GetStringCode(char *str, string &strCode);
bool GetImg(string code,CImage& img);
HDC Hdc=::GetWindowDC(::GetDesktopWindow());
int main(int argc, char **argv)
{
//"038000356216"
FillCodeMap();
string code;
GetStringCode("",code);
printf("cod:\n%s\n",code.c_str());
CImage img;
GetImg(code,img);
img.Save(L"d:/barcode-demo.jpg");//这里基本就OK了 下面是直接显示到屏幕的代码 CImage demo;
{
demo.Create(img.GetWidth()+,img.GetHeight()+,);
HBRUSH white=(HBRUSH)GetStockObject(WHITE_BRUSH);
RECT rc;
rc.left=;
rc.right=demo.GetWidth();;
rc.top=;
rc.bottom=demo.GetHeight();
HDC hdc=demo.GetDC();
::FillRect(hdc,&rc,white);
img.BitBlt(hdc,,);
demo.ReleaseDC();
} while()
{
demo.BitBlt(Hdc,,);
::Sleep();
}
return ;
} bool GetImg(string code,CImage& img)
{
if(code.empty())return false;
if(!img.IsNull())img.Destroy(); int perWid=;
int externWid=;
int hei=+externWid*;
int wid=code.length()*perWid+externWid*;
img.Create(wid,hei,);
HDC hdc=img.GetDC();
HBRUSH white=(HBRUSH)GetStockObject(WHITE_BRUSH);
HBRUSH black=(HBRUSH)GetStockObject(BLACK_BRUSH);
RECT rc;
rc.left=rc.top=;
rc.right=img.GetWidth();
rc.bottom=img.GetHeight();
::FillRect(hdc,&rc,white); rc.left=externWid;
rc.right=rc.left+perWid;
rc.top=externWid;
rc.bottom=img.GetHeight()-externWid;
const char* p=code.c_str();
for(int i=;i<code.length();++i)
{
::FillRect(hdc,&rc,p[i]==''?white:black);
rc.left+=perWid;
rc.right+=perWid;
}
img.ReleaseDC();
}
bool FillCodeMap(void)//g_codemap是个map,这我不用讲了,找个地方定义一下,在此处填充
{
if(!g_codemap.empty())
return true; g_codemap[]="";
g_codemap[]="";
g_codemap[]="";
g_codemap[]="";
g_codemap[]="";
g_codemap[]="";
g_codemap[]="";
g_codemap[]="";
g_codemap[]="";
g_codemap[]="";
g_codemap[]="";
g_codemap[]="";
g_codemap[]="";
g_codemap[]="";
g_codemap[]="";
g_codemap[]="";
g_codemap[]="";
g_codemap[]="";
g_codemap[]="";
g_codemap[]="";
g_codemap[]="";
g_codemap[]="";
g_codemap[]="";
g_codemap[]="";
g_codemap[]="";
g_codemap[]="";
g_codemap[]="";
g_codemap[]="";
g_codemap[]="";
g_codemap[]="";
g_codemap[]="";
g_codemap[]="";
g_codemap[]="";
g_codemap[]="";
g_codemap[]="";
g_codemap[]="";
g_codemap[]="";
g_codemap[]="";
g_codemap[]="";
g_codemap[]="";
g_codemap[]="";
g_codemap[]="";
g_codemap[]="";
g_codemap[]="";
g_codemap[]="";
g_codemap[]="";
g_codemap[]="";
g_codemap[]="";
g_codemap[]="";
g_codemap[]="";
g_codemap[]="";
g_codemap[]="";
g_codemap[]="";
g_codemap[]="";
g_codemap[]="";
g_codemap[]="";
g_codemap[]="";
g_codemap[]="";
g_codemap[]="";
g_codemap[]="";
g_codemap[]="";
g_codemap[]="";
g_codemap[]="";
g_codemap[]="";
g_codemap[]="";
g_codemap[]="";
g_codemap[]="";
g_codemap[]="";
g_codemap[]="";
g_codemap[]="";
g_codemap[]="";
g_codemap[]="";
g_codemap[]="";
g_codemap[]="";
g_codemap[]="";
g_codemap[]="";
g_codemap[]="";
g_codemap[]="";
g_codemap[]="";
g_codemap[]="";
g_codemap[]="";
g_codemap[]="";
g_codemap[]="";
g_codemap[]="";
g_codemap[]="";
g_codemap[]="";
g_codemap[]="";
g_codemap[]="";
g_codemap[]="";
g_codemap[]="";
g_codemap[]="";
g_codemap[]="";
g_codemap[]="";
g_codemap[]="";
g_codemap[]="";
g_codemap[]="";
g_codemap[]="";
g_codemap[]="";
g_codemap[]="";
g_codemap[]="";
g_codemap[]="";
g_codemap[]="";
g_codemap[]="";
g_codemap[]="";
g_codemap[]="";
g_codemap[]="";
g_codemap[]="";
g_codemap[]=""; return true;
}
bool GetStringCode(char *str, string &strCode)
{//传说中的code128B码就是这么造的,因为VC中的char其实就是一个int,所以对我们VC来讲更是简单无比
if(str==NULL)
return false;
if(int(strlen(str))==)
return false; vector <int> tV; int nTol = ;
int nsz = strlen(str); for (int i=;i<nsz;i++)
{
if(str[i]>=)
nTol += (str[i] - ) * (i+);
else
nTol += (str[i] + ) * (i+);
} int nEndCode = nTol%;
if (nEndCode>=)
{
if(nEndCode<=)
nEndCode = + nEndCode;
}
else
{
nEndCode += ;
} tV.push_back();//加头
for (int j=;j<nsz;j++)
tV.push_back(int(str[j]));//加内容
tV.push_back(nEndCode);//加校验码
tV.push_back();//加尾 int nV = tV.size();
for (int k=;k<nV;k++)
{
strCode += g_codemap[tV.at(k)];
} return true;
}

条形码(barcode)code128生成代码的更多相关文章

  1. 使用Spire.Barcode程序库生成二维码

    使用Spire.Barcode程序库生成二维码 某天浏览网页发现了一个二维码的程序库.它的描述说他可以扫描二维码图像.我很感兴趣,想试试他是不是会有用.所以我就用了些方法扫描二维码图像来测试一下.结果 ...

  2. Android注解使用之通过annotationProcessor注解生成代码实现自己的ButterKnife框架

    前言: Annotation注解在Android的开发中的使用越来越普遍,例如EventBus.ButterKnife.Dagger2等,之前使用注解的时候需要利用反射机制势必影响到运行效率及性能,直 ...

  3. mybatis Generator生成代码及使用方式

    本文原创,转载请注明:http://www.cnblogs.com/fengzheng/p/5889312.html 为什么要有mybatis mybatis 是一个 Java 的 ORM 框架,OR ...

  4. x01.CodeBuilder: 生成代码框架

    根据 Assembly 生成代码框架. 这是学习 AvalonEdit 的一个副产品.学习时,照着源代码新建文件夹,新建文件,添加方法与属性,虽然只是个框架,也要花费大量时间.为什么不让它自动生成呢? ...

  5. mybatis generator maven插件自动生成代码

    如果你正为无聊Dao代码的编写感到苦恼,如果你正为怕一个单词拼错导致Dao操作失败而感到苦恼,那么就可以考虑一些Mybatis generator这个差价,它会帮我们自动生成代码,类似于Hiberna ...

  6. 动态生成一个设定好特殊样式的Tlabel,快速生成代码

    动态生成一个设定好特殊样式的Tlabel,快速生成代码: 1.自己先在可视化界面设定一个Label,像这样: 2.选择label,快捷键ctrl+C 复制,粘贴带代码编辑器去,会生成一段这样的窗体代码 ...

  7. apt 根据注解,编译时生成代码

    apt: @Retention后面的值,设置的为CLASS,说明就是编译时动态处理的.一般这类注解会在编译的时候,根据注解标识,动态生成一些类或者生成一些xml都可以,在运行时期,这类注解是没有的~~ ...

  8. 使用mybatis-generator生成代码

    文档地址: ​http://mbg.cndocs.tk/index.html ​ 以下是一个简单的配置内容. 一.在maven配置文件中添加mybatis-generator插件 1 2 3 4 5 ...

  9. WebStorm按Tab建快速生成代码模块

    WS中,比如调试每次都要写的console.log(xxx);每次都要敲一遍,还有if模块,for循环模块,难道没有快捷键,可以生成代码模块吗,答案是“有”. 操作步骤如下(汉化版WS): 1.Alt ...

随机推荐

  1. iOS和Android图标大小

    iOS版 有关要求和指导原则适用于iOS的应用程序图标的更多详细信息,请参阅的iOS人机界面指南:图标和图像尺寸和技术Q&A QA1686:iPad和iPhone上的应用程序图标. 所有图标都 ...

  2. 作为测试人员,不能不懂的adb命令和操作

    刚从web转到app测试,很多知识需要补充,记录一下   1.概念 其实我们口中所讲的adb是个泛指,这其中有两个工具——Fastboot和ADB   fastboot 快速启动,usb链接数据线的一 ...

  3. 从分析攻击方式来谈如何防御DDoS攻击

    DDoS攻击的定义: DDoS攻击全称——分布式拒绝服务攻击,是网络攻击中非常常见的攻击方式.在进行攻击的时候,这种方式可以对不同地点的大量计算机进行攻击,进行攻击的时候主要是对攻击的目标发送超过其处 ...

  4. initdb - 创建一个新的 PostgreSQL数据库集群

    SYNOPSIS initdb [ option...] --pgdata | -D directory DESCRIPTION 描述 initdb 创建一个新的 PostgreSQL 数据库集群. ...

  5. 五、WebSocket 链接

    一.前端代码: <!DOCTYPE html> <html lang="en" xmlns="http://www.w3.org/1999/xhtml& ...

  6. AIX中的服务管理

    1.SRC AIX系统使用资源控制器(SRC,system   resource  controller),控制各种服务子系统,包括启动,停止进程,搜集进程状态信息等.   AIX系统中服务有子系统组 ...

  7. Ubuntu 16.04 编译ORB_SLAM2_modified

    编译g2o_with_orbslam2 1.修改g2o/types/slam2d/edge_se2_pointxy_bearing.cpp t.setRotation(t.rotation().ang ...

  8. Excel去重操作

    工作中经常遇到要对 Excel 中的某一列进行去重操作,得到不重复的结果,总结如下: 选中要操作的列(鼠标点击指定列的字母,如T列) 点击"数据"中"排序和筛选" ...

  9. win2008 ad域控搭建

    一.前言 1.1 AD 域服务 什么是目录(directory)呢? 日常生活中使用的电话薄内记录着亲朋好友的姓名.电话与地址等数据,它就是 telephone directory(电话目录):计算机 ...

  10. gitlab docker中postgresql远程访问配置

    1.配置postgresql远程访问 配置postgresql远程访问,需要修改两个文件,在gitlab-ce的docker中位置为 /var/opt/gitlab/postgresql/data 首 ...