FireMonkey 3D: Primitives auf TImage3D zeichnen?
-
Tach.
In der VCL zeichne ich mir diverse Grundformen immer in ein TImage->Canvas. Quasi sowas wie Bauplänen. Ich möchte nun gern in FireMonkey 3D dies ebenfalls tun, da ich die Baupläne übereinander stapeln und rotieren lassen möchte, etc etc. Leider finde ich hier keine äquivalente Möglichkeit. Hat hier jemand schon Primitives auf ein TImage3D verwendet oder kennt einen anderen genauso schnellen Weg? Ich suche also so etwas womit man Linien, Ellipsen, Rechtecke und Polygone auf eine Fläche zeichnen kann, die wiederum man im TViewPort3D frei bewegen kann.
-
Vielleicht sollte ich noch erwähnen, dass ich auch daran dachte in ein TLayer3D ein TImage zu setzen, um so zu zeichnen wie früher. Aber dieses TImage enthält kein Canvas mehr und ich finde bisher auch in der Hilfe nichts das mit dahingehend weiterhilft.
http://docwiki.embarcadero.com/Libraries/de/FMX.Objects.TImage
-
Nach herumsuchen in der Dokumentation, da es scheinbar keine Beispiele gibt, habe ich rausgefunden das man in FMX BeginScene() verwenden muss.
http://docwiki.embarcadero.com/Libraries/XE3/de/FMX.Types.TCanvas.BeginScene
if (Image1->Canvas->BeginScene()) { __try { Image1->Canvas->DrawLine(PointF(0,0),PointF(220,180), 1); } __finally { Image1->Canvas->EndScene(); } }
Dies zeichnet nun eine Linie, juhu... aber es zeichnet diese Linie erst wenn ich das TLayer3D worin das TImage liegt im 3D Raum bewege. Ich finde aber in der Dokumentation keinen Hinweis auf ein Repaint, Paint, Refresh oder Invalidate um die "Scene" letztendlich auch sofort darzustellen. Eigentlich hätte ich auch gedacht das EndScene() dafür verantwortlich wäre. Weiß da jemand weiter?