我想生成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);