I have my own Delphi TFrame that emulates Roy Tanck Cumulus Tag Cloud viewer, a WordPress Flash plugin. What this plugin does is create a three-dimensional sphere of words that rotate on the surface of the "virtual" sphere. You can see it in action here:
http://www.roytanck.com/2008/03/06/wordpress-plugin-wp-cumulus-flash-based-tag-cloud/
In my application structure, each word has its own TBitmap and displays a sphere. I print all the bitmaps of the word on a temporary TBitmap and then BitBlt (), which is temporarily TBitmap on the canvas of the visible TPaintBox. The rendering operation occurs in the TTimer timer event, which occurs every 50 milliseconds.
However, no matter how hard I try, there is a noticeable "tremor" of the movement of words, especially in comparison with the silky smooth movement of the Flash player. I thought increasing the frame rate could help, and I even tried using a media timer that updates every 10 milliseconds with proper locking and unlocking of all canvases due to the multi-threaded nature of the MM timer. Still nervous. The only thing I can understand is that the calculations I do result in discrete pixel locations for each word that needs to be visualized, and that causes jitter. On the contrary, and this assumption, it is possible that Flash potentially does anti-aliasing in order to facilitate visualization “between pixels” or maybe real-time anti-aliasing and why does it not tremble?
In any case, is it possible to get the smooth smooth movement I am looking for using my own Delphi code? Or is this the only way to do this to go all the way to something like a Direct3D or OpenGL solution? I do not want to waste time changing this thing to death if it is a losing battle. On the other hand, if you have any advice, I would love to hear them. I assume that if I have to go the Direct3D / OpenGL path, this is a lot of work and a learning curve, so if I could find a way to do this in Delphi's own code, I would like it.
FOLLOW-UP EDIT: Will printing a larger “virtual” bitmap and then using a resampling method like the one shown here help print down to the actual Canvas visible ?:
Delphi?