adamszabo wrote:I would love to see a faster way for learning purposes
Here you are. Note, that it is just a prototype. Lots of knobs to play with and lots of code to explore (mostly helper methods). The core is using GDI+ to calculate everything, so it's as fast as it gets. One exception is the shadow_transform() method. Unfortunately Flowstone doesn't provide access to the results of matrix manipulations (like translate) and so I had to do all the calculations manually to have access to the results. It's not much though (but if there are any takers to optimize my rather straight-forward math, go for it).