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

最佳答案

每个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);

07-24 09:16