一、下载地址: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。
四、效果如下: