I’d just like to take a moment to give a shout out to the Piccolo.NET project (which is actually a terrific port, by the original authors, of a toolkit by the same name). I used it when developing MindTree and loved it. If you check out MindTree I think you’ll agree that it runs pretty smoothly and there aren’t many true WinForms apps with that sort of animation+layout+antialiasing+zoomability (unless they were built with purchased components, and even those are fairly limited).
Piccolo is an incredibly well thought-out, easy-to-use, and performant framework for user interfaces, and it’s free and open-source.
It was written by the University of Maryland’s department of Human Computer Interaction Lab. It has a deep heritage in other UI frameworks that were largely created in order to provide zoomable user interfaces with flexible layouts and animation.
Sound familiar? It’s pretty similar to WPF, but without the XAML and the binding. What’s left, you say? The most important part, in my opinion. It’s a retained graph, a scene, a component tree that abstracts away the need to rigorously manage GDI+ and erase and redraw regions. This is an essential requirement in order to have true UI components. And it’s also essential for performant animation and interactivity.
I mention all of this because no one seems to know about the Piccolo toolkit. For that matter, no one seems to really appreciate WPF either (at least Silverlight is gaining momentum, but people are still sort of missing the power of the thing), but I digress. I also mention it because if you want to do WPF-like stuff without WPF, Piccolo is a great toolkit for it. In .NET it runs inside WinForms, includes Windows Mobile Support, and even runs under Mono, I believe. It’s got no drag/drop designer support like WinForms and WPF, but it if you need some interactive components you can just do the interactive / animated / zooming bit in Piccolo and the rest in WinForm and use the designer to your heart’s content. It also runs great in Java2D (check out the applet demos), and I don’t believe Java has anything like it or WPF. Not sure how well the animation would work on Java mobile devices, but seriously, folks, it might be worth your time to check it out.
I should also say that the project isn’t really being developed anymore, but there is an active mailing list. Then again, the reason for that is that the project is basically complete (a rare thing). I haven’t had a single problem with it. It doesn’t really need any further development.
Piccolo toolkit doesn’t do lookless controls, but you could easily do that. The entire UI is built around the concept of a PNode, which is somewhere in between a Visual and UIElement in WPF terms. It has a recursive measure/layout algorithm similar to that of the WPF layout engine. It doesn’t come with very many pre-built components per se, but there is a ton of great demos that really show off the power of the architecture.
The only thing that is really missing is layout panels. Once you had those, you could create a lot of WPF elements pretty easily. PNodes are basically analagous to the WPF <Canvas> panel. I actually wrote my own version of a StackPanel long before I knew anything about WPF’s panels. I may try to extract some of my Piccolo components, like the stack panel, and share them, if anyone’s interested.
Anyway, Piccolo is great. I’m sad I found it towards the decline of WinForms and the ascent of WPF, but I just wanted to give a shout out. It deserves it.
Yes, Piccolo is great. It was very helpful and complete library before WPF.