我想尽可能高效地复制TRectangle后面的位图区域(以红色边框为例)。这是父控件中红色矩形的边界。更有效的父亲边界矩形副本
我有这个在我的德尔福Firemonkey应用:
获取整个父曲面到临时父TBitmap:
(Parent as TControl).PaintTo(FParentBitmap.Canvas,
RectF(0, 0, ParentWidth, ParentHeight));
再后来就复制我想要的矩形:
bmp.CopyFromBitmap(FParentBitmap, BoundsRect, 0, 0);
当然这并不高效。我想通过1遍复制矩形,或者至少我不想将整个父级绘制到临时TBitmap中。
你知道一个有效的方法吗?请告诉。
我创建了一个TFrostGlass组件,它有完整的源代码。你可以看到/在这里下载了:https://github.com/Spelt/Frost-Glass
副本位代码是:FrostGlass.pas
不清楚你想要什么,为什么不imediatly给了bmp.canvas?你也有功能TmyControl.MakeScreenshot – 2017-02-24 20:23:33
谢谢。我更新了这个问题,希望现在清楚。 MakeScreenShot将不起作用,因为控件只绘制红色边框,因此截图仅包含红色边框。 – Edward
用负偏移调用PaintTo?而不是在目标画布上绘制(0,0),画到(-control.Left,-control.Top)。 –