Ich habe mal eigene "Controls" in einem Thread berechnen und auf einem Bitmap zeichnen lassen.
Die Ausgabe erfolgte dann synchronisiert im Mainthread durch kopieren des Bitmaps auf den Formularcanvas. Vom Mainthread aus wurden dann die Maus- und Tastaturereignisse auch wieder nur in den "Controls-Thread" gegeben.
Wie das aussah kannst Du hier sehen:
https://www.delphipraxis.net/1294946-post59.html
Rappelschnell.
Leider habe ich die Quellen nicht mehr. Könnte mich gerade selbst in den A... beißen, weil ich damit gern noch etwas testen würde...