我编程不怎么样,但想象力好,不是高手不要进!!只等高手(50分)

  • 主题发起人 主题发起人 963119
  • 开始时间 开始时间
9

963119

Unregistered / Unconfirmed
GUEST, unregistred user!
我要在一张A4纸上一次性打印8张Form1程序面(里面有Labe1-8、Image1等):

1 2
3 4
5 6
7 8
位置序号要求不严格
难点:
1、怎样把FORM1程序面复制成图片或其他的。。。传入Image2或内存里?
  2、如果传入内存怎样排列并打印出来?
 
这段代码能否改成传入Image2 ????
begin
with TBitmap.Create do
try
Width := Form1.Width;
Height := Form1.Height;
PixelFormat := pf24bit;
BitBlt(Canvas.Handle, 0, 0, Width, Height, TForm1Crack(Form1).Canvas.Handle, 0, 0, SRCCOPY);
SaveToFile('c:/Tmp/test.bmp'); //能否不要保存改成传入Image2
finally
Free;
end;
 
VAR
bmp:Tbitmap;

begin
bmp:=Tbitmap.Create;
with bmp do begin
try
Width := Form1.Width;
Height := Form1.Height;
PixelFormat := pf24bit;
BitBlt(Canvas.Handle, 0, 0, Width, Height, Form1.Canvas.Handle, 0, 0, SRCCOPY);
image2.Picture.Bitmap.Assign(bmp);
//能否不要保存改成传入Image2
finally
Free;
end;
end;
end;

关于并列打印:
BitBlt(Canvas.Handle, 改这里, 改这里, Width, Height, Form1.Canvas.Handle, 0, 0, SRCCOPY);
 
你看看TFORM的方法中有一个叫print。看看它的实现,其他还用我教你么?你的想象力那么好!
 
尊敬的qiuyan0519:
  这一句我还是不会改(光有想象力但基础不好[:D])
BitBlt(Canvas.Handle, 改这里, 改这里, Width, Height, Form1.Canvas.Handle, 0, 0, SRCCOPY);
 
冷血的wk_knife:
  我光有想象力但基础不好呀,其实我也看到TFORM的方法中有一个叫print的,就是不会嘛,不知你是不是吹牛,你看看人家qiuyan0519,他做了什么!你做了什么!!!!!!!!![:(]
 
BitBlt(Canvas.Handle, 改这里, 改这里, Width, Height, Form1.Canvas.Handle, 0, 0, SRCCOPY);
并列打印难道只可以改那吗? 这样
BitBlt(Canvas.Handle, 改这里, 改这里, Width, Height, Form1.Canvas.Handle, 改这里, 改这里, SRCCOPY);
效果是一样的啊
 
好笑的963119:
在成长过程中,对于每一个帮助你的人都应该抱有感激之心,不要因为别人给你的是渔而非鱼而气恼,甚至反责,现在不理解的不妨暂且收藏。

你想像力这么好,我也没什么好说的了,呵呵。
 
如果你跟老板说:我编程不怎么样,但想象力好,他一定会调你到作秀的部门,你就不用再编程了!多好
 
1、怎样把FORM1程序面复制成图片或其他的。。。传入Image2或内存里?
2、如果传入内存怎样排列并打印出来?
>>利用抓屏原现依次抓取窗体的图片存在内存中bmp1, bmp2,...,bmp8
>>新建一个Canvas,并在上面排好bmp1,bmp2,...,bmp8(图像拷贝.爱怎样排就怎样排)
>>把Canvas送到打印机打出来.
你的想像力好,一定也知道怎么做了,所以我就不说了.
 
如果qiuyan0519的答案你验证过了的话,这个问题其实已经解决了!

VAR
bmp:Tbitmap;

begin
bmp:=Tbitmap.Create;
with bmp do begin
try
Width := Form1.Width;
Height := Form1.Height;
PixelFormat := pf24bit;
BitBlt(Canvas.Handle, 0, 0, Width, Height, Form1.Canvas.Handle, 0, 0, SRCCOPY);
//以下是随手写的
with printer do
begin
begindoc
for i:=0 to 7 do
begin
printer.canvas.StretchDraw(Rect((i div 2)*(A4height div 8),
(i mod 2)*(A4width div 2),
(i div 2+1)*(A4height div 8),
(i mod 2+1)*(A4width div 2)),bmp);
//缩放绘制到相应的位置
end;
endDoc;
//就差不多了.
finally
Free;
end;
end;
end;
 
to dirk:
“现在不理解的不妨暂且收藏”
对于渴望知识的人是只要有机会,就不会“不妨暂且收藏”!!!
你们都是前辈, 如果出于对知识经验的保护(教会了徒弟饿坏了师傅)我可以理解。那么你们上delphibbs.com干嘛?不会是为了别人的知识经验吧!如果是未免太.....。。。。???
我是一个业余兴趣者,我也收藏了一些别人的知识经验。我看到别人的问题,我知道就帮,不会就帮顶[:D]
 
感谢wk_knife:
  我本着能激将就激的心理[:)],我是一个业余兴趣者,qiuyan0519的答案我已验证通过了,对于我的无理,请您原谅!.
  想象前面就有我这个人,您是砍、是杀。。。情理之中。
  也可以骂我QQ:252601077 [:D]
 
其实有时加答问题不一定要全部告诉细节
那样对提问的人不一定是一件好事
指明思路,让你随着思路去解决问题,这样对提问的人更有意义

另外也不要要求所有人花很多时间写代码去回答你的问题,那是很无理的要求
贴代码是因为有现成的代码
 
多人接受答案了。
 
送你一句话:小人之心度君子。--不理解就暂且收藏吧。
 
后退
顶部