Don't attempt this in WinForms or using GDI. That's guaranteed to provide glitchy performance. I agree with what's already been said regarding a WPF implementation.

However, I'm curious, why would you want to implement this in a Windows application?