Na verdade emite QrCode Livre e QrCode para PIX.
Pesquisei na Internet e fiz alteração em minha rotina e voltou a funcionar.
Não vou saber o que houve, nem o que alterei, mas segue a rotina que está funcionando. Pode ser útil para outra pessoa que tenha o mesmo problema.
A alteração que efetuei está basicamente no comando // transfere o bitmap para a imagem
Agradeço vossa atenção.
procedure QrCodeToCanvas(AWidth, AHeight: Integer; ATexto:String; ACanvas: TCanvas);
var
bitmap: TBitmap;
qr: TDelphiZXingQRCode;
r: Integer;
Integer;
vI1: Integer;
vI2: Integer;
scala: Double;
begin
bitmap := TBitmap.create;
try
qr := TDelphiZXingQRCode.create;
try
qr.Data := ATexto;
// ajuta o tamanho do bitmap para o tamanho do qrcode
bitmap.SetSize(qr.Rows, qr.Columns);
// copia o qrcode para o bitmap
vI1 := qr.Rows;
vI2 := qr.Columns;
for r := 0 to vI1 - 1 do
for c := 0 to vI2 - 1 do
if qr.IsBlack[r, c] then
bitmap.Canvas.Pixels[c, r] := clBlack
else bitmap.Canvas.Pixels[c, r] := clWhite;
// prepara para redimensionar o qrcode para o tamanho do canvas
if (AWidth < bitmap.Height) then
scala := (AWidth / bitmap.Width)
else scala := (AHeight / bitmap.Height);
// transfere o bitmap para a imagem
ACanvas.StretchDraw(Rect(0, 0, Trunc(scala * bitmap.Width),
Trunc(scala * bitmap.Height)), bitmap);
finally
qr.Free;
end;
finally
bitmap.Free;
end;
end;