Italian community of Lazarus and Free Pascal
Programmazione => Generale => Topic aperto da: Giuani - Luglio 23, 2020, 10:12:21 am
-
Salve a tutti
spero di postare nel posto giusto.
Scopiazzando qua e la, con LazBarcodes ho fatto questa
procedure TForm1.Button1Click(Sender: TObject);
var Rt: TRect;
PBox:TPaintBox;
png : TPortableNetworkGraphic;
bmp: TBitmap;
begin
bmp := TBitmap.Create;
png := TPortableNetworkGraphic.Create;
BarcodeQR:= TBarcodeQR.Create(PaintBox1);
BarcodeQR.Text:=Testo.Text;
BarcodeQR.ECCLevel:=eBarcodeQR_ECCLevel_L;
BarcodeQR.Width := 200;
BarcodeQR.Height := 200;
BarcodeQR.ForegroundColor:= clBlack;
BarcodeQR.BackgroundColor:= clWhite;
BarcodeQR.StrictSize := true;
BarcodeQR.Generate;
Rt := Rect(0, 0, BarcodeQR.Width, BarcodeQR.Height);
BarcodeQR.PaintOnCanvas(PaintBox1.Canvas,Rt);
end;
Vorrei visualizzare il codice QR sulla Form con un TPaintBox o un TPicures e poi salvarlo in png o jpeg.
La procedura non da errori, ma non riesco a visualizzare ne con TPaintBox ne con TPicures.
Mi date qualche consiglio ?
Grazie dell’attenzione
-
Prova questo, è più semplice di quello che pensi. C'è già un oggetto per visualizzare il barcode su una form.
-
Ciao xinyiman
Si è così. Grazie
Ora visto che ci siamo, ti chiedo un’altra cortesia.
La procedura genera un file bmp
bmp.Canvas.Brush.Color := clWhite;
bmp.Canvas.FillRect(R);
BarcodeQR.PaintOnCanvas(bmp.Canvas, R);
che salvo con bmp.SaveToFile(imgbmpcode.bmp');
dal bmp si ottiene un png png.Assign(bmp);
e senza altro chiedere il programma salva di default nella cartella dove ci sono i programmi.
Utilizzando qualche componente Dialogs si potrebbero salvare le immagini nella cartella desiderata scegliendo nome ed estensione del file immagine ?
Ancora grazie.
-
Sperando di aver capito la domanda.
Guarda qui: https://wiki.freepascal.org/Howto_Use_TSaveDialog
-
Grazie del link, molto utile.
Con l’idea del link sono andato a curiosare tra gli esempi di lazarus C:\lazarus\examples\jpeg e ho trovato qualcosa di più specifico.
Ciao
-
Figurati