如何生成TScrollBox的全部内容的图像?

时间:2013-11-28 13:03:23

标签: delphi

我想生成TScrollBox的全部内容的图像。像截图一样。即使所有内容都不在可见屏幕区域内。

1 个答案:

答案 0 :(得分:3)

每个TControl后代都有一个Perform方法,您可以使用该方法使其执行,就像处理Windows消息一样,所以这应该有效:

var
  b:TBitmap;
begin
  b:=Image1.Picture.Bitmap;//or b:=TBitmap.Create;
  b.Width:=ScrollBox1.HorzScrollBar.Range;
  b.Height:=ScrollBox1.VertScrollBar.Range;
  SetWindowOrgEx(b.Canvas.Handle,-ScrollBox1.HorzScrollBar.Position,-ScrollBox1.VertScrollBar.Position,nil);
  ScrollBox1.Perform(WM_ERASEBKGND,b.Canvas.Handle,0);
  ScrollBox1.Perform(WM_PAINT,b.Canvas.Handle,0);