Undoubtedly, in GDI + it is not possible to bind strings to a path (this is what you would be looking for).
Thus, the only way to do this is by hand. This means splitting the string into characters and placing them based on your own path calculations.
If you do not want to put a lot of work into it, you should try to find a library (potentially a complete replacement for GDI +) to do this or abandon your rainbow.
With WPF, you can render text along a path ( see link to method )
Foxfire
source share