できるだけ効率的にTRectangleの背後のビットマップ領域をコピーしたいとします。これは、親コントロール内の赤い四角形からの境界線です。親バインドされた矩形のより効率的なコピー
bmp.CopyFromBitmap(FParentBitmap, BoundsRect, 0, 0);
:私が欲しいの長方形をコピーするために、後に続い
(Parent as TControl).PaintTo(FParentBitmap.Canvas,
RectF(0, 0, ParentWidth, ParentHeight));
と:一時親TBitmapのに全体の親表面を取得
:
私は私のDelphi FireMonkeyのアプリでこれを持っています
もちろんこれは効率的ではありません。私は1パスで矩形をコピーしたい、あるいは少なくとも親全体をtemp TBitmapにペイントしたくない。
効率的な方法をご存知ですか?伝えてください。
TFrostGlassコンポーネントを作成しましたが、その中に完全なソースがあります。 https://github.com/Spelt/Frost-Glass
コピービットマップコードはである:FrostGlass.pas残念ながら
imediatlyがbmp.canvasを与えなかった理由は何ですか? TmyControl.MakeScreenshot –
ありがとうございます。私は質問を更新し、今はっきりと願っています。コントロールが赤い枠線のみをペイントするため、スクリーンショットには赤い枠線しか含まれていないため、MakeScreenShotは機能しません。 – Edward
PaintToを負のオフセットで呼び出しますか?ターゲットキャンバスで(0、0)にペイントする代わりに、(-control.Left、-control.Top)にペイントします。 –