One way you could get closer to your goal is to use the intermediate element classes for TWincontrols and draw the image moved onto them after they have already been painted using TControlCanvas and WM_PAINT hooking.
The code shows an unprocessed draft using a translucent PNG image and can be enlarged.

unit Unit2; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, Buttons, dxGDIPlusClasses, ExtCtrls; type TButton=Class (StdCtrls.TButton) Procedure WMPaint(var MSG:TMessage);Message WM_Paint; End; TEdit=Class (StdCtrls.TEdit) Procedure WMPaint(var MSG:TMessage);Message WM_Paint; End; TForm2 = class(TForm) Image1: TImage; SpeedButton1: TSpeedButton; Button1: TButton; Edit1: TEdit; Edit2: TEdit; private { Private-Deklarationen } public { Public-Deklarationen } end; var Form2: TForm2; implementation {$R *.dfm} { TButton } procedure TButton.WMPaint(var MSG: TMessage); var cc:TControlCanvas; begin inherited; CC:=TControlCanvas.Create; CC.Control := TControl(Self); CC.Draw(-Left,-Top,Form2.Image1.Picture.Graphic); CC.Free; end; procedure TEdit.WMPaint(var MSG: TMessage); var cc:TControlCanvas; begin inherited; CC:=TControlCanvas.Create; CC.Control := TControl(Self); CC.Draw(-Left,-Top,Form2.Image1.Picture.Graphic); CC.Free; end; end.
Another (better) place to hook will override PaintWindow
unit Unit2; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, Buttons, dxGDIPlusClasses, ExtCtrls; type TButton=Class (StdCtrls.TButton) procedure PaintWindow(DC: HDC);override; End; TEdit=Class (StdCtrls.TEdit) procedure PaintWindow(DC: HDC);override; End; TForm2 = class(TForm) Image1: TImage; SpeedButton1: TSpeedButton; Button1: TButton; Edit1: TEdit; Edit2: TEdit; private { Private-Deklarationen } public { Public-Deklarationen } end; var Form2: TForm2; implementation {$R *.dfm} { TButton } procedure TButton.PaintWindow(DC: HDC); var cc:TCanvas; begin inherited; CC:=TCanvas.Create; CC.Handle := DC; CC.Draw(-Left,-Top,Form2.Image1.Picture.Graphic); CC.Free; end; procedure TEdit.PaintWindow(DC: HDC); var cc:TCanvas; begin inherited; CC:=TCanvas.Create; CC.Handle := DC; CC.Draw(-Left,-Top,Form2.Image1.Picture.Graphic); CC.Free; end; end.