Ver Mensaje Individual
  #2  
Antiguo 27-06-2008
jconnor82 jconnor82 is offline
Miembro
 
Registrado: feb 2008
Posts: 22
Reputación: 0
jconnor82 Va por buen camino
Post

Hola q tal....

Solo tendrias q escalar la imagen en el canvas de la impresora

Código Delphi [-]
  ...
  var
    ScaleX, ScaleY, L, W, H: Integer;
    R: TRect;
  begin
      ...
      with Printer do
      begin
        {Escala - El PixelsPerInch de la Impresora es distinto al q vez en el
         monitor, Form en este caso}
        ScaleX := GetDeviceCaps(Handle, logPixelsX) div Form1.PixelsPerInch;
        ScaleY := GetDeviceCaps(Handle, logPixelsY) div Form1.PixelsPerInch;

        {Nuevo tamaño - En este punto puedes variarlo, eso si hazlo sin 
        perder la relacion de la imagen original, multiplicando a H y W por la
        misma constante}
        H := MyGraphics.Height * ScaleY;
        W := MyGraphics.Width * ScaleX;

        {Si el ancho de la imagen pasa al del canvas de la impresora corrijo el
        el alto... no lo he puesto, pero, lo mismo seria con el alto}
        if Printer.PageWidth < W then
        begin
          H := MulDiv(H, Printer.PageWidth, W);
          W := Printer.PageWidth;
        end;

        {En este punto modificas la posicion en la q kieres q valla la imagen lo
        he puesto en la parte central en tu caso solo tendrias q iterar y variar
        la posicion de la imagen, tambien tendrias q mejorar la parte del
        StretchDraw, pero la idea es esa}
        L := (Printer.PageWidth - W) div 2;
        R := Rect(L, 0, L + W, 0 + H);
        PY := R.Bottom;
        Canvas.StretchDraw(R, bmLogo);
      end;

Espero y te sirva... nos vemos
Responder Con Cita