如何将TMemo的内容画到一个TBitmap上?(200分)

  • 主题发起人 主题发起人 dyf
  • 开始时间 开始时间
D

dyf

Unregistered / Unconfirmed
GUEST, unregistred user!
如何将TMemo的内容画到一个TBitmap上
Memo.Paintto(Bitmap.Canvas.Handle,0,0)不成
 
procedure TForm1.Button1Click(Sender: TObject);
var
bm: TBitmap;
DC: HDC;
begin
bm := TBitmap.Create;
DC := GetWindowDC(memo1.Handle);
bm.Width := memo1.Width;
bm.Height := memo1.Height;
bitblt(bm.canvas.handle, 0, 0, memo1.width,
memo1.height, DC, 0, 0, SRCCOPY);
bm.SaveToFile('f:/dddd.bmp');
bm.Free;
ReleaseDC(memo1.handle, DC);
end;
 
承蒙回顾,十分感谢,这样是可以的,其实我真正想知道
SendMessage(bm.Handle,WM_PAINT,DC,0) ;
为什么不行, TEdit, TMemo这些window控件都是这模样,请指教



 
好像只能拷贝当前屏的内容!
 
如果要把所有内容都画到TBitmap上,就要自己动手,一行行的TextOut到Bitmap上去了。
有几个可以参考一下的贴子:
请问如果打印memo里的内容?
http://www.delphibbs.com/delphibbs/DispQ.asp?LID=514923
我想把窗体上的内容,包括edit,memo里的东西都打印出来我该怎么写代码呀,是一句form.print就可以吗??
http://www.delphibbs.com/delphibbs/DispQ.asp?LID=547024
 
SendMessage(bm.Handle,WM_PAINT,DC,0) ;
只是一个通知消息,告诉bm这个窗口:“喂~~!老兄,你该重画你自已了!!!”,
然后bm开始调用TextOut,BitBlt等函数,把自己画了出来。
一个TMemo控件实际上是对Windows Edit标准控件的包装,
而Windows Edit知道怎么样画出自己来,只是只限于在自己的HDC上。
 
同意楼上二位的
 
多人接受答案了。
 
后退
顶部