DelphiZXingQRCode 库:轻松集成二维码生成功能到 Delphi 项目中

news2024/11/17 2:40:35

 一、下载地址:GitHub - foxitsoftware/DelphiZXingQRCode: Delphi port of QR Code functionality from ZXing, a barcode image processing library.

二、使用步骤: 

1)引用单元文件。

//引用单元
uses
   DelphiZXIngQRCode

 2)编写函数。


//生成qrcode函数
procedure GenerateQRCodeBitmap(const SourceText: string; const Encoding: TQRCodeEncoding;
  const QuietZone: Integer; const Bitmap: TBitmap);
var
  QRCode: TDelphiZXingQRCode;
  Row, Column: Integer;
begin
  QRCode := TDelphiZXingQRCode.Create;
  try
    QRCode.Data := SourceText;
    QRCode.Encoding := Encoding;
    QRCode.QuietZone := QuietZone;
    Bitmap.SetSize(QRCode.Rows, QRCode.Columns);
    for Row := 0 to QRCode.Rows - 1 do
    begin
      for Column := 0 to QRCode.Columns - 1 do
      begin
        if (QRCode.IsBlack[Row, Column]) then
        begin
          Bitmap.Canvas.Pixels[Column, Row] := clBlack;
        end else
        begin
          Bitmap.Canvas.Pixels[Column, Row] := clWhite;
        end;
      end;
    end;
  finally
    QRCode.Free;
  end;
end;

3)调用 


procedure TForm1.Button5Click(Sender: TObject);
begin
QRCodeBitmap:=TBitmap.Create;
GenerateQRCodeBitmap('http://www.example.com', TQRCodeEncoding.qrAuto, 4, QRCodeBitmap);
image1.Picture.Bitmap:=QRCodeBitmap;
QRCodeBitmap.free;
end;

三、代码解释:

该过程接受四个参数:SourceText 表示要编码成二维码的文本,Encoding 表示编码方式,QuietZone 表示安静区大小,Bitmap 是用于保存生成的二维码的 TBitmap 对象。

在过程中,我们首先创建一个 TDelphiZXingQRCode 对象,设置它的 Data、Encoding 和 QuietZone 属性。然后创建一个 TBitmap 对象,设置它的大小为 TDelphiZXingQRCode 对象的 Rows 和 Columns 属性。接下来,我们使用 for 循环遍历 TDelphiZXingQRCode 对象的 IsBlack 属性,并将相应的像素颜色设置为黑色或白色。最后,我们释放 TDelphiZXingQRCode 对象并重绘 PaintBox1。

四、效果如下:

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/817001.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

AD21 PCB设计的高级应用(五)模块复用的操作

(五)模块复用的操作 1.利用Room实现相同模块复用2.复制粘贴功能实现模块复用 1.利用Room实现相同模块复用 本小节介绍 Altium Designer 两种常用模块复用方法:一种是利用 Room 实现相同模块复用,另一种是利用复制粘贴功能实现。 1.利用Room实现相同模块…

《面试1v1》Kafka的ack机制

🍅 作者简介:王哥,CSDN2022博客总榜Top100🏆、博客专家💪 🍅 技术交流:定期更新Java硬核干货,不定期送书活动 🍅 王哥多年工作总结:Java学习路线总结&#xf…

数组的使用(逆序、冒泡)

内存连续数据类型相同从0开始索引 找出数组中的最大值 #include <iostream> #include <stdlib.h> //随机数所在文件 using namespace std;int main() {int arr[5]{104,134,145,129,89};//初始化没有填的为0 int max0;for(int i0;i<5;i){if(arr[i]>max){ma…

算法综合篇专题一:双指针问题

"就算没有看清那株灿烂的花蕊&#xff0c;也应该放声歌颂赞美鲜红的玫瑰" 1、移动零 (1) 题目解析 (2) 算法原理 class Solution { public:void moveZeroes(vector<int>& nums) {for(int cur0,dest-1;cur<nums.size();cur){if(nums[cu…

【Unity造轮子】实现一个类csgo的武器轮盘功能

文章目录 前言素材导入开始1.放背景和中间的圆圈&#xff0c;调整合适的宽高和位置2.添加选择图像框3.添加一些武器道具选择4.书写脚本RadialMenuManager5.绑定脚本和对象6.运行效果&#xff0c;按tab键开启关闭轮盘7.优化添加显示选中的武器文本8.添加鼠标选中放大的效果9.添加…

ModaHub魔搭社区:国产大模型名录和产品信息一览表114个

取名类型 公司名 大模型名字 序号 旧词新组 百度 文心一言 1 阿里 通义千问 2 知乎 知海图 3 云知声 山海 4 中国科学院计算技术研究所 百聆

算法通过村第二关-链表青铜笔记

文章目录 再战链表|反转链表剑指 Offer II 024. 反转链表熟练掌握这两种解法建立头节点的解决思路不采用建立头节点的方法采用循环/递归的方式解决 总结 再战链表|反转链表 提示&#xff1a;多拿些酒来&#xff0c;因为生命只有乌有。 剑指 Offer II 024. 反转链表 如果不使用…

Excel修改日期格式,改变日期的筛选方式

我们有两列日期数据&#xff1a; 左边这一列筛选会显示&#xff1a; 右边这一列筛选会显示&#xff1a; 修改格式&#xff0c;将【日期1】改为【日期2】 将【日期1】的格式修改为文本格式即可 修改格式&#xff0c;将【日期2】改为【日期1】 选中日期2&#xff0c;点击【数据…

实用调试技巧(1)

什么是bug&#xff1f;调试是什么&#xff1f;有多重要&#xff1f;debug和release的介绍。windows环境调试介绍。一些调试的实例。如何写出好&#xff08;易于调试&#xff09;的代码。编程常见的错误。 什么是Bug 我们在写代码的时候遇到的一些问题而导致程序出问题的就是Bu…

C语言——函数栈帧的创建和销毁

Hello&#xff0c;好久没有写博客了&#xff0c;前两份都是之前写的&#xff0c;看来最近有点懈怠&#xff0c;最近也得快点找回学习的状态&#xff0c;那今天开始我们新的讲解 在我们刚开始学习C语言的时候&#xff0c;不知道大家有没有困惑&#xff0c;比如我们在使用局部变量…

vue 表单form-item模板(编辑,查看,新建)

目录 formatFormData 后端数据格式​编辑 JSON解析和生成 加载&#xff08;请求前&#xff0c;await后&#xff09; formComp formatFormData 后端数据格式 为空的&#xff0c;可以直接不提交/提交null/undefined JSON解析和生成 var str {"name": "…

ERROR: No matching distribution found for wxpyhton

ERROR: No matching distribution found for wxpyhton pip install 库包名 -i http://pypi.douban.com/simple/ --trusted-host pypi.douban.compip install wxpython -i http://pypi.douban.com/simple/ --trusted-host pypi.douban.com

Voicebox:文本引导的大规模多语言通用语音生成

说白了就是录一段你的声音&#xff0c;在最短的时间内学会你说话&#xff01; Meta AI研究团队模型&#xff0c;Voicebox是一个文本转语音的工具&#xff0c;具有多种功能和应用。根据提供的搜索结果&#xff0c;以下是Voicebox的一些功能和特点&#xff1a; 多语言支持&…

语义分割、转置卷积、风格迁移(第十二次组会)

TOC 语义分割 图像分割、实例分割 上采样、下采样 转置卷积 全卷积网络 风格迁移

操作系统_进程与线程(四)

目录 4. 死锁 4.1 死锁的概念 4.1.1 死锁的定义 4.1.2 死锁产生的原因 4.1.3 死锁的处理策略 4.2 死锁预防 4.3 死锁避免 4.3.1 系统安全状态 4.3.2 银行家算法 4.3.2.1 数据结构描述 4.3.2.2 银行家算法描述 4.3.2.3 安全性算法 4.3.3 安全性算法举例 4.3.4 银行…

【EI/SCOPUS会议征稿】第三届物联网与机器学习国际学术会议(IoTML 2023)

第三届物联网与机器学习国际学术会议&#xff08;IoTML 2023&#xff09; 2023 3rd International Conference on Internet of Things and Machine Learning 2023年物联网与机器学习国际学术会议&#xff08;IoTML 2023&#xff09;将于2023年9月15-17日在新加坡召开。会议…

安装华为模拟器

安装前需要安装虚拟机 虚拟机安装 下一步 立即安装 安装驱动 完成 一路下一步 安装完成后拖动一个2240启动

【Liux下6818开发板(ARM)】实现简易相册

(꒪ꇴ꒪ ),hello我是祐言博客主页&#xff1a;C语言基础,Linux基础,软件配置领域博主&#x1f30d;快上&#x1f698;&#xff0c;一起学习&#xff01;送给读者的一句鸡汤&#x1f914;&#xff1a;集中起来的意志可以击穿顽石!作者水平很有限&#xff0c;如果发现错误&#x…

Linux NameSpace 虚拟化 资源隔离

NameSpace NameSpace介绍 在操作系统中命名空间命名空间提供的是系统资源的隔离&#xff0c;其中系统资源包括了&#xff1a;进程、网络、文件系统等等 实际上linux系统实现命名空间主要目的之一就是为了实现轻量级虚拟化服务&#xff0c;也就是我们说的容器&#xff0c;在同…

分享一个赛车动画

先看效果&#xff08;动画太大了放不上来&#xff0c;甘心去复制代码运行即可&#xff09;&#xff1a; 再看代码&#xff1a; <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>赛车</title><…