有人会用打印机么?(50分)

  • 主题发起人 主题发起人 -{GOD}-Casal
  • 开始时间 开始时间
G

-{GOD}-Casal

Unregistered / Unconfirmed
GUEST, unregistred user!
大家好,我是新手上路,请多指教。
谁会用打印机控件,我想用它把form上的图形打印出来
有什么办法吗????
谢谢各位大虾帮忙
 
procedure TForm1.BitBtn1Click(Sender: TObject);
begin
if printdialog1.execute then
begin
printer.begin
doc;
printer.canvas.draw(0,0,image1.picture.graphic);
printer.enddoc;
end;
end
 
在 这 种 情 况 下, 使 用 的 是 打印 机 的 分 辨 率, 图 形
在 页 面 的 左 上 角 开 始 打 印 输 出, 打 出的 图
形 很 小, 在 很 多 的 情 况 下 不 能 符 合 要 求, 但 是 打 印 机
画 布CANVAS 的STRETHDRAW 的 方 法, 可 以 让 我
们 对 图 形 进 行 灵 活的 处 理, 画 布(CANVAS) 的STRETCHDRAW 方
法 声 名 为:
procedure StretchDraw(const Rect: TRect;
Graphic: TGraphic);
其中的RECT参数代表图形输出区域的大小,TRECT的类型声名为:
TRect = record
case Integer of
0: (Left, Top, Right, Bottom: Integer);
1: (TopLeft, BottomRight: TPoint);
end;
因 此 我 们 只 要 调 整RECT 的 大小 及 其 在 打 印 页 面 上
的 位 置, 进 而 达 到 自 己 满 意 的 效 果,下 面
的 代 码 是 不 断 的 放 大 图 形, 充 满 我 们 定 义 的 矩 形 区域,
并 将 其 定 位 在 打 印 机 画 布(CANVAS) 的 中 央
进 行 输 出。代 码 如 下:
procedure TForm1.Button1Click(Sender: TObject);
VAR
strect:Trect;
//定义打印输出矩形框的大小
temhi,temwd:integer;
begin
if printdialog1.execute then
begin
temhi:=image1.picture.height;
temwd:=image1.picture.width;
while (temhi printer.pageheight div 2)and
//将图形放大到打印页面的1/2大小
(temwd printer.pagewidth div 2) do
begin
temhi:=temhi+temhi;
temwd:=temwd+temwd;
end;
with strectdo
//定义图形在页面上的中心位置输出
begin
left:=(printer.pagewidth -temwd) div 2;
top:=(printer.pageheight-temhi) div 2;
right:=left+temwd;
bottom:=top+temhi;
end;
with printerdo
begin
begin
doc;
canvas.stretchdraw(strect,image1.picture.graphic);
//将放大的图形向打印机输出
enddoc;
end;
end;
end;
 
非常感谢!
 
我调程序时有问题
procedure TForm1.BitBtn1Click(Sender: TObject);
begin
if printdialog1.execute then
begin
printer.begin
doc;
printer.canvas.draw(0,0,image1.picture.graphic);
printer.enddoc;
end;
end
加粗和斜体的地方,程序出错
 
cwmdelpher谢谢了
我知道自己错在哪了
 
后退
顶部