Ver Mensaje Individual
  #5  
Antiguo 19-09-2023
Avatar de duilioisola
[duilioisola] duilioisola is offline
Miembro Premium
 
Registrado: ago 2007
Ubicación: Barcelona, España
Posts: 1.734
Reputación: 20
duilioisola Es un diamante en brutoduilioisola Es un diamante en brutoduilioisola Es un diamante en bruto
Para crear la imagen QR utilizo el componente TDelphiZXingQRCode
Lo puedes descargar en https://github.com/foxitsoftware/DelphiZXingQRCode

Luego hice un procedimiento que me devuelve un TBitmap del mismo

Código Delphi [-]
procedure CrearCodigoQR(Bitmap: TBitmap; s: string; Factor: integer = 1);
var
  QRCode : TDelphiZXingQRCode;
  Row, Column : integer;
begin
  /// Pinta un codigo QR en el BITMAP.
  /// Modificara el tamaño del BITMAP para que entre el codigo QR.
  /// Factor es el tamaño de cada punto (1 = 1 pixel, 2 son puntos de 2x2 pixels, etc.)

  QRCode := TDelphiZXingQRCode.Create;
  try
     // Configuracion del codigo QR (Alfa o numerico automatico, 4 puntos de borde).
     QRCode.Data := s;
     QRCode.Encoding := qrAuto;
     QRCode.QuietZone := 4;

     // Modifico tamaño del Bitmap
     Bitmap.Height := QRCode.Rows * Factor;
     Bitmap.Width := QRCode.Columns * Factor;

     // Recorro el codigo QR y pinto los puntos
     for Row := 0 to QRCode.Rows - 1 do
     begin
        for Column := 0 to QRCode.Columns - 1 do
        begin
           if (QRCode.IsBlack[Row, Column]) then
              Bitmap.Canvas.Brush.Color := clBlack
           else
              Bitmap.Canvas.Brush.Color := clWhite;

           // Cada punto se corresponderá a un cuadrado de (Factor x Factor) pixeles
           Bitmap.Canvas.FillRect(Classes.Rect((Factor * Column), (Factor * Row), (Factor * Column) + Factor, (Factor * Row) + Factor));
        end;
     end;
  finally
     QRCode.Free;
  end;

Y lo utilizo para la imagen que voy a imprimir.
Código Delphi [-]
        [...]
        Imagen := TImage.Create(nil);
        try
           CrearCodigoQR(Imagen.Picture.Bitmap, xCabecera.FieldByName('SFV_CODIGO_RESPUESTA_RAPIDA').AsString, 3);
           TfrPictureView(View).Picture.Assign(Imagen.Picture);
        finally
           Imagen.Free;
        end;
        [...]
Responder Con Cita