Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Impresión (https://www.clubdelphi.com/foros/forumdisplay.php?f=4)
-   -   Ajustar el tamaño de la imagen para imprimir (https://www.clubdelphi.com/foros/showthread.php?t=36646)

ingel 19-10-2006 13:40:04

Ajustar el tamaño de la imagen para imprimir
 
Hola a todos , se que es un tema bastante tratado .. pero no logro dar con la solucion . Estoy usando Delphi5 y QReport. Mi problema es que las imagenes guardadas en la DB (sql) son muy 'grandes' y al imprimirlas me imprime solo una parte .. he tratado de recurrir al Strech pero las 'deforma totalmente' y quedan ilegibles ... (creo que en Delphi 7 este problema ya esta solucionado , pero lamentablemente tengo que seguir con el 5) ... tendria que imprimir en tamaño A4 sea cual sea el tamaño y dimensiones originales de las imagenes (escaneadas)
Saludos y gracias

seoane 19-10-2006 14:53:01

Bueno, no se si te servirá pero aquí te dejo un método para imprimir una imagen ajustándola al tamaño del papel, sin deformarla.

Código Delphi [-]
uses Printers, Jpeg;

procedure Imprimir(Imagen: TGraphic);
var
  R: TRect;
  Ancho, Alto: Integer;
begin
  with Printer, Printer.Canvas do
  begin
    Printer.Orientation := poPortrait;
    BeginDoc;
    try
      Ancho:= ClipRect.Right - ClipRect.Left;
      Alto:= ClipRect.Bottom - ClipRect.Top;
      R:= Rect(0, 0, Ancho, Alto);
      if  (Ancho/Imagen.Width) < (Alto/Imagen.Height) then
        R.Bottom:= Trunc((Ancho*Imagen.Height)/Imagen.Width)
      else
        R.Right:= Trunc((Imagen.Width*Alto)/Imagen.Height);
      StretchDraw(R,Imagen);
      EndDoc;
    except
      Abort;
    end;
  end;
end;

// Ejemplo de uso
var
  Imagen: TJpegImage;
begin
  Imagen:= TJPEGImage.Create;
  try
    Imagen.LoadFromFile('d:\1.jpg');
    Imprimir(Imagen);
  finally
    Imagen.Free;
  end;
end;

ingel 19-10-2006 15:38:19

Gracias Seoane
 
lo pruebo y te comento

Casimiro Notevi 07-03-2007 21:26:25

Ya hace tiempo que se escribió este hilo, pero hoy me ha hecho falta "urgentemente" justo lo que hace el código que había escrito seoane.
El resultado ha sido perfecto como es costumbre en él :)


La franja horaria es GMT +2. Ahora son las 20:43:45.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi