将一维和条形码读取图像 - Windows C DLL
本教程介绍如何使用 Windows C DLL 应用程序中的 LEADTOOLS SDK 在加载的图像上写入一维和二维条形码信息。
概述 | |
---|---|
概括 | 本教程介绍如何L_BarCodeWrite 在 Windows C DLL 应用程序中使用该函数。 |
完成时间 | 30分钟 |
Visual Studio 项目 | 下载教程项目 (19 KB) |
平台 | Windows C DLL 应用程序 |
集成开发环境 | Visual Studio 2017、2019 |
开发许可证 | 下载 LEADTOOLS |
尝试使用其他语言 |
|
所需知识
在开始“将 1D 和 2D 条形码写入图像 - Windows C DLL”教程之前,请先查看“添加引用”和“设置许可证”以及“检测和提取条形码”教程,熟悉创建项目的基本步骤。
创建项目并添加 LEADTOOLS 引用
从“检测和提取条形码 - Windows C DLL”教程中创建的 64 位 Windows API 项目的副本开始。如果该项目不可用,请按照该教程中的步骤创建它。
确保预编译头文件(pch.h
或stdafx.h
,取决于所使用的 Visual Studio 版本)中包含以下必需的头文件和 DLL 文件。
#include "C:\LEADTOOLS23\Include\L_Bitmap.h" // use actual path where you installed LEADTOOLS
#pragma comment (lib, "C:\\LEADTOOLS23\\Lib\\CDLL\\x64\\Ltkrn_x.lib")
#pragma comment (lib, "C:\\LEADTOOLS23\\Lib\\CDLL\\x64\\Ltfil_x.lib") // file loading and saving
#pragma comment (lib, "C:\\LEADTOOLS23\\Lib\\CDLL\\x64\\Ltdis_x.lib") // image display
#include "C:\LEADTOOLS23\Include\Ltbar.h"
#pragma comment (lib, "C:\\LEADTOOLS23\\Lib\\CDLL\\x64\\Ltbar_x.lib") // barcode support
笔记
有关您的应用程序所需的 DLL 的完整列表,请参阅应用程序中包含的文件 - C API。
设置许可证文件
许可证用于解锁项目所需的功能。必须在调用任何工具包功能之前设置许可证。有关详细信息(包括不同平台的教程),请参阅设置运行时许可证。
运行时许可证有两种类型:
- 评估许可证,在下载评估工具包时获得。它允许对工具包进行评估。
- 部署许可证。如果需要部署许可证文件和开发者密钥,请参阅获取许可证。
笔记
添加引用和设置许可证教程中更详细地介绍了如何添加 LEADTOOLS 引用和设置许可证。
添加条形码写入器代码
创建项目、添加参考、设置许可证以及添加加载、显示、条形码和保存代码后,就可以开始编码了。
以下步骤适用于 Visual Studio 2019;对于其他版本的 Visual Studio,它们可能有所不同。
转到解决方案资源管理器并双击资源文件 (.rc)。
在“条形码”下拉菜单中添加新的“写入条形码”菜单项。新菜单项的 ID 应为。ID_BARCODE_WRITEBARCODE
转到WndProc
函数并在switch (wmId)
该案例下方的语句下WM_COMMAND
添加一个新案例:
switch (wmId)
{
case ID_BARCODE_WRITEBARCODE:
if (LEADBmp.Flags.Allocated)
{
Write1DBarcode(hWnd);
Write2DBarcode(hWnd);
}
else
MessageBox(hWnd, TEXT("Cannot write barcodes. No image loaded"), TEXT("Barcode Demo"), MB_ICONERROR);
break;
// keep rest of the code as is
将以下代码添加到两个新的条形码写入函数中。这些函数可以放在WndProc
函数上方:
void Write1DBarcode(HWND hwnd)
{
if (L_BarCodeInit(BARCODES_1D) != SUCCESS)
return;
BARCODEDATA BarCodeData = { 0 };
BARCODECOLOR BarColor = { 0 };
BARCODE1D BarCode1D = { 0 };
L_INT nRet;
BarColor.uStructSize = sizeof(BARCODECOLOR);
BarColor.dwColorBar = RGB(0, 0, 0);
BarColor.dwColorSpace = RGB(255, 255, 255);
BarCodeData.uStructSize = sizeof(BarCodeData);
BarCodeData.rcBarLocation.left = 50;
BarCodeData.rcBarLocation.top = 50;
BarCodeData.rcBarLocation.right = 650;
BarCodeData.rcBarLocation.bottom = 150;
BarCodeData.nUnits = BARCODE_SCANLINES_PER_PIXELS;
BarCodeData.ulType = BARCODE_1D_CODE_128;
char szDataString[] = "Code 128 by LEADTOOLS";
BarCodeData.pszBarCodeData = szDataString;
BarCodeData.nSizeofBarCodeData = (L_INT)strlen(BarCodeData.pszBarCodeData);
BarCode1D.uStructSize = sizeof(BARCODE1D);
BarCode1D.bErrorCheck = TRUE;
BarCode1D.bOutShowText = TRUE;
//Write the barcode
nRet = L_BarCodeWrite(&LEADBmp, &BarCodeData, &BarColor, BARCODE_USECOLORS, &BarCode1D, NULL, NULL, NULL, NULL, NULL, NULL, NULL);
if (SUCCESS == nRet)
InvalidateRect(hwnd, NULL, TRUE);
else
MessageBox(hwnd, TEXT("Could Not Write 1D Barcode"), TEXT("Barcode Demo"), MB_ICONERROR);
L_BarCodeExit();
}
void Write2DBarcode(HWND hwnd)
{
if (L_BarCodeInit(BARCODES_QR_WRITE) != SUCCESS)
return;
BARCODEDATA BarCodeData = { 0 };
BARCODECOLOR BarColor = { 0 };
BARCODEWRITEQR BarCodeQR = { 0 };
L_INT nRet;
BarColor.uStructSize = sizeof(BARCODECOLOR);
BarColor.dwColorBar = RGB(0, 0, 0);
BarColor.dwColorSpace = RGB(255, 255, 255);
BarCodeData.uStructSize = sizeof(BarCodeData);
BarCodeData.rcBarLocation.left = 50;
BarCodeData.rcBarLocation.top = 250;
BarCodeData.rcBarLocation.right = 650;
BarCodeData.rcBarLocation.bottom = 550;
BarCodeData.nUnits = BARCODE_SCANLINES_PER_PIXELS;
BarCodeData.ulType = BARCODE_QR_M1_DEF; //Default Model 1 QR Code size
char szDataString[] = "https://www.leadtools.com/help/sdk/dh/to/qr-code-barcodes-in-leadtools.html";
BarCodeData.pszBarCodeData = szDataString;
BarCodeData.nSizeofBarCodeData = (L_INT)strlen(BarCodeData.pszBarCodeData);
BarCodeQR.uStructSize = sizeof(BarCodeQR);
BarCodeQR.ulFlags = BARCODE_JUSTIFY_H_CENTER | BARCODE_JUSTIFY_V_CENTER;
//Write the barcode
nRet = L_BarCodeWrite(&LEADBmp, &BarCodeData, &BarColor, BARCODE_USECOLORS, NULL, NULL, NULL, &BarCodeQR, NULL, NULL, NULL, NULL);
if (SUCCESS == nRet)
InvalidateRect(hwnd, NULL, TRUE);
else
MessageBox(hwnd, TEXT("Could Not Write 2D Barcode"), TEXT("Barcode Demo"), MB_ICONERROR);
L_BarCodeExit();
}
运行项目
按F5或选择“调试” -> “开始调试”来运行项目。
如果正确遵循这些步骤,应用程序应该可以运行。选择“文件” -> “打开”,加载要写入条形码的图像。选择“条形码” -> “写入条形码”,应用程序会在图像上写入两个新的条形码。
可以调整边界LeadRect
来选择条形码在图像上的写入位置。此外,可以通过修改 的值来更改要写入的条形码符号BarCodeData.ulType
。
本教程介绍了如何在 Windows C API 应用程序中使用 LEADTOOLS SDK 在加载的图像上写入两种类型的条形码。