我想生成TScrollBox的全部内容的图像。像截图一样。即使所有内容都不在可见屏幕区域内。
答案 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);