主页C++ Builder 资料C++ Builder 编程技巧图片处理生成二维码
C++ Builder 串口控件
C++ Builder 编程技巧
字符串及文字处理
多媒体处理
图片处理
 • 显示 gif 图片和动画
 • bmp 转 gif 图片和动画
 • gif 的每一帧都提取出来
 • jpg,gif,png,bmp之间转换
 • 屏幕截图
 • 生成二维码
 • 识别二维码和条码
文件处理
界面处理
C++ Builder 操作指南
C++ Builder 参考手册
网友留言/技术支持
使用 zint 生成二维码
 • 编译 zint 动态库
 • 生成二维码的例子程序
 • 下载例子程序和 zint 库 (源码 + 执行文件)

编译 zint 动态库

目前 zint 库的最新版本为 2.6.2
官方源码 zint-2.6.2.src 可以从这里下载 https://sourceforge.net/projects/zint/files/zint/2.6.2/

本文介绍的源码可以在本文的末尾下载,是在官方源码的基础上,其中:

源码没有做任何修改,
在 zint-2.6.2.src 文件夹里面新增 "C++ Builder" 文件夹,这里包含:
    projects\C10.2   是编译源码的项目文件,可以生成 zint.dll 和对应的 .lib 或 .a 文件
    dll              生成的 .dll 文件和对应的 .lib 或 .a 在这个文件夹里面

编译动态库的项目文件是 C++ Builder 10.2 Tokyo 创建和编译的,
可以直接使用生成的 zint.dll 文件,使用生成的 zint.lib 或 zint.a 链接这个动态库。

 

生成二维码的例子程序

 

二维码不限于网址或超链接,可以随意输入一段文字,点击 “生成二维码” 按钮生成二维码,
使用 UTF-8 编码,支持多国语言,例如下面的截图。
目前标准的应用就是 UTF-8 编码的文字或超链接,可以在程序里面修改为使用其他文字编码,也可以用二进制数据生成二维码。

 

使用 zint.dll 生成二维码的演示程序很简单,代码如下:

//---------------------------------------------------------------------------

#include <vcl.h>
#pragma hdrstop

#include "zint.h"
#include "UnitQRMain.h"
//---------------------------------------------------------------------------
#if defined(__clang__) && (__POINTER_WIDTH__ == 64)
#  pragma link "zint.a"
#else
#  pragma link "zint.lib"
#endif
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
    : TForm(Owner)
{
  BmpQR = new Graphics::TBitmap;
  BmpQR->PixelFormat = pf24bit;
  Memo1->Text = L"二维码演示程序→中文Français한국어\r\nCopyright © Victor Chen\r\nhttp://www.cppfans.com/";
}
//---------------------------------------------------------------------------
__fastcall TForm1::~TForm1()
{
  delete BmpQR;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
  UTF8String source = Memo1->Text;

  zint_symbol *my_symbol = ZBarcode_Create();
  my_symbol->input_mode = DATA_MODE; // UNICODE_MODE
  my_symbol->symbology = BARCODE_QRCODE;
  ZBarcode_Encode_and_Buffer(my_symbol, (unsigned char *)source.c_str(), source.Length(), 0);

  BmpQR->Width = my_symbol->bitmap_width;
  BmpQR->Height = my_symbol->bitmap_height;
  int iRowBits = BmpQR->Width * 3; // 24 bits
  int iRowCount = BmpQR->Height;
  char *pBmpLineData = my_symbol->bitmap;
  for(int row=0; row<iRowCount; row++)
   {
     memcpy(BmpQR->ScanLine[row], pBmpLineData, iRowBits);
     pBmpLineData += iRowBits;
   }

  ZBarcode_Delete(my_symbol);

  // BmpQR->SaveToFile(L"d:\\abcd.bmp"); // 生成的位图可以保存为 bmp 文件
  PaintBox1->Invalidate();
}
//---------------------------------------------------------------------------
void __fastcall TForm1::PaintBox1Paint(TObject *Sender)
{
  int iWidth = PaintBox1->Width < PaintBox1->Height ? PaintBox1->Width : PaintBox1->Height;
  int iHeight = iWidth;
  int iLeft = (PaintBox1->Width - iWidth) / 2;
  int iTop = (PaintBox1->Height - iHeight) / 2;

  PaintBox1->Canvas->StretchDraw(TRect(iLeft,iTop,iLeft+iWidth,iTop+iHeight),BmpQR);
}
//---------------------------------------------------------------------------

 

 

下载例子程序和 zint 库 (源码 + 执行文件)

下载的压缩包包含的内容:

文件夹 描述
ZInt  
 ├ TestQRCode 演示程序
 │  ├ bin 可执行文件
 │  │  ├ Win32 32 位可执行文件
 │  │  └ Win64 64 位可执行文件
 │  ├ C10.2 C++ Builder 10.2 Tokyo 项目文件
 │  ├ C2010 C++ Builder 2010 项目文件
 │  └ Source 演示程序源码
 └ zint-2.6.2.src zint 源码
   ├ C++ Builder C++ Builder 相关的文件
   │  ├ dll dll 和库文件
   │  │  ├ Win32 32 位 zint.dll 和 zint.lib
   │  │  └ Win64 64 位 zint.dll 和 zint.a
   │  └ projects 编译 dll 和库文件的项目文件
   │    └ C10.2 C++ Builder 10.2 Tokyo 项目文件
   ├ 其他文件夹 官方源码,未做任何修改

下载:

文件 字节数 发布时间 下载次数
二维码演示程序 + zint 2.6.2 (源码 + 可执行文件) (Win32/Win64) 2,535,126 2017-12-09 5315
◤上一页:屏幕截图下一页:识别二维码和条码

C++ 爱好者 -- Victor Chen 的个人网站 www.cppfans.com 辽ICP备11016859号