Pregunta: | 12162 - IMPRIMIR UN BITMAP |
Autor: | Diego Romero |
Ante todo debo aclarar que soy nuevo en Delphi, tengo la versión enterprise 5.0.
Pongo un bitmap en un Timage de un form junto a otros controles y quiero imprimir solo el bitmap, he hecho algo pero en la impresora me sale la imagen mas chica que una estampilla, ¿cómo hago para que en la impresora me salga de un tamaño mas o menos acorde con lo que se ve en pantalla? |
Respuesta: | Luis Fernandez |
Impresión directa.Te puede salir la imagen como una pulga.
procedure TForm1.Print1Click(Sender: TObject); begin Printer.BeginDoc; try Printer.Canvas.Draw(0, 0, Image1.Picture.Graphic); finally Printer.EndDoc; end; end; Con este código ajustas la escala de la imagen cargada en un objeto TImage de Delphi y mas o menos se imprime a escala real.Antes tienes que cargar la imagen en el TImage. procedure TForm1.Button1Click(Sender: TObject); var ScaleX, ScaleY: Integer; R: TRect; begin Printer.BeginDoc; with Printer do try ScaleX := GetDeviceCaps(Handle, logPixelsX) div PixelsPerInch; ScaleY := GetDeviceCaps(Handle, logPixelsY) div PixelsPerInch; R := Rect(0, 0, Image1.Picture.Width * ScaleX, Image1.Picture.Height * ScaleY); Canvas.StretchDraw(R, Image1.Picture.Graphic); finally EndDoc; end; end; Este hace los mismo que el anterior pero NO CONSUME RECURSOS DEL SISTEMA pues empleas un objeto TPicture que creas en el momento y destruyes tras la impresión. procedure TForm1.Button1Click(Sender: TObject); var P: TPicture; ScaleX, ScaleY: Integer; R: TRect; begin P := TPicture.Create; try P.LoadFromFile('C:\MiDirectorio\Ejemplo.bmp'); Printer.BeginDoc; with Printer do try ScaleX := GetDeviceCaps(Handle, logPixelsX) div PixelsPerInch; ScaleY := GetDeviceCaps(Handle, logPixelsY) div PixelsPerInch; R := Rect(0, 0, P.Width * ScaleX, P.Height * ScaleY); Canvas.StretchDraw(R, P.Graphic); finally Printer.EndDoc; end; finally P.Free; end; end; |