If you’ve ever used the Delphi Firemonkey image filter effect components you may have experienced some of their limitations. The way the filter effect components work is that you drop a filter on a Firemonkey control and that filter is applied to the visible output of that control whether it is a TButton or a TImage. You can make a whole Firemonkey form interface Sepia very quickly by the way. The one problem with this is that filters do not stack. You can’t put a THueAdjustEffect and a TContrastEffect filter on the same component and have them both applied (as far as I’ve tested anyway). The solution to this if you want to apply multiple filters to a bitmap is to apply the filters using code. Luckily there is a blog post that describes exactly how to do this. An additional plus is that this also allows you to apply filters to controls that are not currently visible (like an offscreen bitmap or a buffer image). Apparently the key is the ApplyWithoutCopyToOutput procedure.
FMXExpress.com has over 700 tips and tricks for building cross platform apps on Android, IOS, OSX, Windows, and Linux with a single codebase and single UI using the FireMonkey framework found in Delphi and C++Builder.
FMXExpress covers top cross platform secrets for FireMonkey in C++Builder and Delphi XE5, XE6, XE7, XE8, Seattle, Berlin, Tokyo, Rio, and Sydney.