TPrinter = class(TObject)
如何利用这个类实现一个既有文本又有图片的文档的打印?
没用过这个,但是听说功能很强大,有人给个例子吗?
如何利用这个类实现一个既有文本又有图片的文档的打印?
没用过这个,但是听说功能很强大,有人给个例子吗?
解决方案 »
- 如何编程实现象瑞星那样自动定时执行程序?
- 解释一下(((SENDER AS TCHECKBOX).NAME)[10])什么意思
- 可能是句柄问题吧?
- 看了一些历史贴,关于ADO+MTS+COM+客户端出现RPC服务器无法取得的问题的一些疑惑?
- 请问我在等录成功进入主窗口后如何把等录窗口关掉???
- 如何将生成的EXE的图标换成自定义的?
- 关于IdFTP的Get方法
- 如何对memo进行编程,鼠标点击memo如何知道是点击那一行?如何对不同行设置不同颜色,高分在线等待!
- 关于在delphi中用c++ builder中vcl原文件问题
- 下面的代码错在什么地方?在线等?
- 同一个程序,如何判断只能打开一个!
- 请大虾帮忙,如何压缩处理BMP位图文件?
printers; procedure DrawImage(Canvas: TCanvas; DestRect: TRect; ABitmap: TBitmap);
var
Header, Bits: Pointer;
HeaderSize: DWORD;
BitsSize: DWORD;
begin
GetDIBSizes(ABitmap.Handle, HeaderSize, BitsSize);
Header := AllocMem(HeaderSize);
Bits := AllocMem(BitsSize);
try
GetDIB(ABitmap.Handle, ABitmap.Palette, Header^, Bits^);
StretchDIBits(Canvas.Handle, DestRect.Left, DestRect.Top,
DestRect.Right, DestRect.Bottom,
0, 0, ABitmap.Width, ABitmap.Height, Bits, TBitmapInfo(Header^),
DIB_RGB_COLORS, SRCCOPY);
finally
FreeMem(Header, HeaderSize);
FreeMem(Bits, BitsSize);
end;
end; procedure PrintImage(Image: TImage; ZoomPercent: Integer);
// if ZoomPercent=100, Image will be printed across the whole page
var
relHeight, relWidth: integer;
begin
Screen.Cursor := crHourglass;
Printer.BeginDoc;
with Image.Picture.Bitmap do
begin
if ((Width / Height) > (Printer.PageWidth / Printer.PageHeight)) then
begin
// Stretch Bitmap to width of PrinterPage
relWidth := Printer.PageWidth;
relHeight := MulDiv(Height, Printer.PageWidth, Width);
end
else
begin
// Stretch Bitmap to height of PrinterPage
relWidth := MulDiv(Width, Printer.PageHeight, Height);
relHeight := Printer.PageHeight;
end;
relWidth := Round(relWidth * ZoomPercent / 100);
relHeight := Round(relHeight * ZoomPercent / 100);
DrawImage(Printer.Canvas, Rect(0, 0, relWidth, relHeight), Image.Picture.Bitmap);
end;
Printer.EndDoc;
Screen.cursor := crDefault;
end; // Example Call: procedure TForm1.Button1Click(Sender: TObject);
begin
// Print image at 40% zoom:
PrintImage(Image1, 40);
end;
如果单纯是图方便我可以用很多方法实现打印图片和文字。