Piccolo is now being maintained and distributed by a very active volunteer group at www.piccolo2d.org. We'll leave this site here for history, but it is no longer being maintained.

Piccolo Toolkit
About Piccolo
Piccolo Patterns
Getting Started
API Documentation
Piccolo in Comparison
Developer FAQ
Mailing Lists
Graphics Primer

Fisheye Calendar
Graph Editor
Presentation Tool

Source / Binaries SVN



Send Bug Report
Send Code


Contact Us

A Structured 2D Graphics Framework

Welcome to Piccolo! A revolutionary way to create robust, full-featured graphical applications in Java and C#, with striking visual effects such as zooming, animation and multiple representations.

Piccolo is a toolkit that supports the development of 2D structured graphics programs, in general, and Zoomable User Interfaces (ZUIs), in particular. A ZUI is a new kind of interface that presents a huge canvas of information on a traditional computer display by letting the user smoothly zoom in, to get more detailed information, and zoom out for an overview. We use a "scene-graph" model that is common to 3D environments. Basically, this means that Piccolo maintains a hierarchal structure of objects and cameras, allowing the application developer to orient, group and manipulate objects in meaningful ways.

Why use Piccolo? It will allow you to build structured graphical applications without worrying so much about the low level details. The infrastructure provides efficient repainting of the screen, bounds management, event handling and dispatch, picking (determining which visual object the mouse is over), animation, layout, and more. Normally, you would have to write all of this code from scratch. Additionally, if you want to build an application with zooming, that’s built right into the framework too.

What exactly is it? Piccolo is a layer built on top of a lower level graphics API. There are currently three versions of the toolkit: Piccolo.Java, Piccolo.NET and PocketPiccolo.NET (for the .NET Compact Framework). The java version is built on Java 2 and relies on the Java2D API to do its graphics rendering. The .NET version is built on the .NET Framework and relies on the GDI+ API to do its graphics rendering. This makes it easy for Java and C# programmers, even those targeting PDAs, to build their own animated graphical applications. And best of all, Piccolo is free and open source!


Piccolo moved (Aug 10, 2008): Piccolo is now being maintained and distributed by a very active volunteer group at code.google.com/p/piccolo2d/. We'll leave this site here for history, but it is no longer being maintained.

Reduced effort on Piccolo (Nov 1, 2006): We are reducing public support of Piccolo. We continue to use it internally and are aware of a number of external research and commercial uses of Piccolo. We will continue to distribute it open source and maintain the mailing lists, but we no longer have funds for continued development or help for others using Piccolo. We will be happy to continue to fold in external distributions, and do our best to maintain Piccolo, but with significantly reduced resources.

Switching from CVS to Subversion (SVN) (Oct 5, 2006)

Piccolo.NET 1.2 now available! (Dec 6, 2005)
Includes Direct3D Implementation

Piccolo.Java 1.2 now available! (Dec 6, 2005)

The primary paper describing and analyzing the Piccolo architecture: Bederson, B. B., Grosjean, J., & Meyer, J. (2004). Toolkit Design for Interactive Structured Graphics, IEEE Transactions on Software Engineering, 30 (8), pp. 535-546.

PowerPoint presentation about Piccolo.NET [4.5 MB] - given by Ben Bederson at Microsoft Faculty Summit - Aug 2, 2004.