Canvas中的内容如何打印出来/??(300分)

  • 主题发起人 主题发起人 道长
  • 开始时间 开始时间

道长

Unregistered / Unconfirmed
GUEST, unregistred user!
如题!

Printer.begin
Doc;
Printer.Canvas.CopyRect(ARect,MyBook.Canvas,ARect);
Printer.EndDoc;
好像不行,我不想把它保存为图像文件后再打印
 
如果能给出打印特殊版面的文本的方法也可以得分的
例如:
121313 大富翁
asdfasdfas asdfasdfasdfasd
dsfasdfasdfdfasd
sdafasdfd
asdfasdfasdf
asdfasdfasdf
asdfasdf dfasdf asdfasdf
dsfasdf asdfasd asdfasdf
我需要的样式大概就是这个样子的,我把他们画到了一个canvas上,可是无法打印亚
 
with printer.canvasdo

begin

font.name := '宋体';
font.size := 14;
font.Color := clRed;
TextOut(10,10, '121213');//就是在textout中控制打印的位置.
 
begin

Bmp := TBitmap.Create;
Bmp.Width := 100;
Bmp.Height := 100;
Bmp.Canvas.TextOut(10,10,'中华人民共和国');
Printer.begin
Doc;
Printer.Canvas.StretchDraw(Printer.Canvas.ClipRect,Bmp);
Printer.EndDoc;
Bmp.Free;
end;


注意的是,要设置合适的大小,在屏幕上300*300的像素,在300DPI(每英寸300像素)的
打印机上,只是打印出一个一英寸的小方块。屏幕一般是96DPI。
 
xiaoer,好像不行呀,我把你的源码照搬过来,打印出的还是空白
hbezwwl,那样很麻烦呀,我已经把它画到了canvas中了(为了直观,类似与打印预览),
再画一遍好麻烦
 
就判断一下坐标,应该就容易了,我只知道这样.//关注此题.
 
procedure myPrint(Cs: TCanvas);
begin

// Draw what you want on the Cs
...
end;


myPrint(Printer.Canvas);
myPrint(Form1.Canvas);
 
Printer.begin
Doc;
Printer.Canvas.TextOut(10,10,'中华人民共和国');
Printer.EndDoc;
在begin
Doc之后直接画是可以的,但是StretchDraw或CopyRect都不行
关注!
 
用canvas.TextRect,不行的话,试试下面
with Printerdo

begin

begin
Doc;
canvas.FillRect(MyBook.Canvas.ClipRect);
EndDoc;
end;
 
wlmmlw,说清楚一点吧
 
哎!!!
分分了,再挂下去也没有什么意思,最后还是用canvas.textout解决的!!
 
后退
顶部