Diese Frage ist sehr einfach aussieht, mit VCL dies funktioniert gut (Bild ist TImage auf VCL):Zeichnung auf FMX Leinwand mit WinApi Funktionen
procedure TFormMain.btnDrawBackgroundClick(Sender: TObject);
var
theme: HTHEME;
begin
theme := OpenThemeData(0, 'TASKDIALOG');
if theme <> 0 then
try
DrawThemeBackground(theme,
Image.Canvas.Handle,
TDLG_SECONDARYPANEL,
0,
Image.ClientRect,
nil);
finally
CloseThemeData(theme);
end;
end;
Frage: was sollte ich den gleichen Effekt mit FMX erhalten ändern (unter Windows)
Diese Werke, danke –
Und das ist Hilfe von mir, diese Frage zu lösen: http://stackoverflow.com/questions/42928717/colors-of-the-tdialogservice-messagedialog –
Warum diese Antwort wird mit VCLs TBitmap, wenn die Frage stattdessen von FireMonkey gestellt wird? VCL und FMX sind nicht dazu gedacht, miteinander gemischt zu werden. Die 'TBitmap' von FMX hat keine' HDC', auf die Sie mit der Win32-API zurückgreifen können. Allerdings hat FMX 'TImage' ein 'OnPaint'-Event, und Sie können die' HDC' des Forms nutzen, um darauf zu zeichnen. Oder zeichnen Sie zuerst ein Win32 'HBITMAP' und dann ein FMX' Canvas' in den entsprechenden Nachkomme ein, um auf das zugrundeliegende GDI +/Direct2D Objekt zuzugreifen und zeichnen Sie dann 'HBITMAP' darauf. –