【发布时间】:2019-09-08 15:42:45
【问题描述】:
我想对我的页面进行截图并将结果放入位图,因为页面上有一个滚动条,我必须截取几张截图,我想合并这些位图。
如果使用此代码截屏并保存:Take a screenshot of a particular area in Delphi 7
我使用代码从这个页面合并它们http://www.delphigroups.info/2/8/309463.html
如果我直接复制它,它将导致使用第一个图像,第二个是白色矩形。所以我尝试对其进行一些更改,现在我将两个图像放在一个文件中。
这是我用来连接位图的代码:
function ConcatenateBitmaps(const MainBitmap: TBitmap; const BitmapToAdd:
TBitmap): TBitmap;
begin
Result := MainBitmap;
If BitmapToAdd.Width > MainBitmap.Width then
Result.Width := BitmapToAdd.Width;
Result.Height := MainBitmap.Height + MainBitmap.Height;
Result.Canvas.CopyRect(
Rect(0,MainBitmap.Height,BitmapToAdd.Width,BitmapToAdd.Height),
BitmapToAdd.Canvas,
Rect(0,0,BitmapToAdd.Width,BitmapToAdd.Height)
);
end;
问题是第二张图像被垂直和水平翻转;
我在这里做错了什么?
编辑: 结果的一个例子,第一个图像是好的,第二个图像被翻转:
正如我现在看到的,我的描述是错误的,它是水平镜像,垂直翻转
【问题讨论】:
-
代码至少有 2 个问题:1)
Rect需要 2 个点的坐标,而不是宽度和高度 2) 在Result := MainBitmap;之后,两个变量都指向同一个对象,所以改变尺寸的Result更改MainBitmap的尺寸