Bonjour,
J'aimerais savoir s'il existe une fonction rapide pour imprimer un TImage sur une imprimante tout en faisant une mise à l'échelle.
En effet, j'ai un petit logiciel qui posséde un TImage que j'aimerais imprimer.
La solution que j'applique est :
if FMain.PrintDialog1.Execute then
begin
Printer.BeginDoc;
ech1:=Printer.PageWidth/FMain.ImageTrace.Width;
ech2:=Printer.PageHeight/FMain.ImageTrace.Height;
if ech1>ech2 then ech:=ech1 else ech:=ech2;
Long:=trunc(FMain.ImageTrace.Width*ech);
larg:=trunc(FMain.ImageTrace.Height*ech);
for x:=0 to long-1 do
begin
x1:=trunc(x/ech);
For y:=0 to larg-1 do
begin
y1:=trunc(y/ech);
if (x1<FMain.ImageTrace.Width)
and (y1<FMain.ImageTrace.Height) then
Printer.Canvas.Pixels[x,y]:=FMain.ImageTrace.Canvas.Pixels[x1,y1];
end;
end;
Printer.EndDoc;
end;
ech permet de faire la mise à l'échelle entre le TImage et l'imprimante.
Mon gros probléme c'est que si je ne fais pas de mise à l'échelle, j'imprime un timbre poste (ca peut être utile pour envoyer une lettre lol...) mais avec ma procédure, ca prend pas loin de 20 minutes pour imprimer mon image sur PDFCreator. L'impression est correcte mais pas très rapide.
Merci pour vos réponses...
Oniria