
Chris Rolliston has a post up on the Embarcadero forum with a sample function for saving a Delphi XE5 Firemonkey TEffect to file. The trick looks like the ProcessEffect function of a TEffect which actually applies the effect to a bitmap which you can then save. The function relies on an effect being a child of the component you want to save the effect for but you can easily customize it to suite your own needs.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
procedure SaveBitmapWithEffect(const Image: TImage; const FileName: string); var Child: TFmxObject; Effect: TEffect; R: TRectF; Temp: TBitmap; begin Effect := nil; for Child in Image.Children do if (Child is TEffect) and TEffect(Child).Enabled then begin Effect := TEffect(Child); Break; end; R := RectF(0, 0, Image.Bitmap.Width, Image.Bitmap.Height); Temp := TBitmap.Create(Image.Bitmap.Width, Image.Bitmap.Height); try Temp.Canvas.DrawBitmap(Image.Bitmap, R, R, 1); if Effect <> nil then Effect.ProcessEffect(Temp.Canvas, Temp, 1); Temp.SaveToFile(FileName); finally Temp.Free; end; end; |
Read for full question and answer thread over on the Embarcadero forum.
unit FMX.Effects;
constructor TFilterEffect.Create(AOwner: TComponent);
begin
inherited;
//FEffectStyle := [esDisablePaint];
FFilter := CreateFilter;
end;