A currently undocumented feature of SQL 2005 Reporting Services is the ability to develop custom report items for embedding in reports.  The documentation will be available in the web doc update around the time of the release.  But for those of you interested in playing around with this in the mean time, I've put together a sample that shows pretty much everything you need to know to build one.

There are two controls you'll need to build when creating a Custom Report Item:

First, there’s the runtime control.  Based on the presence of a CustomReportItem element in the report (RDL), the report processing engine processes the data and hands the resulting CustomReportItem object (part of the Rendering Object Model) to the runtime control (ICustomReportItem).  The runtime control then creates a standard ReportItem to hand back in to the Rendering Object Model.  Note:  Currently the only type of report items supported is Image.

The second component is the design time control, which provides a plug-in to the Visual Studio-based Report Designer.  It consists of a design surface, an activated design space (good for drag-and-drop of fields), integration with the VS property browser and hooks for a custom editor and other custom actions.  Using this control, you use the report designer object model to construct a custom report item object within the report definition.

There's also a third optional component which allows you to "upgrade" an existing report item to your custom report item.  It just takes an XML node for the original report item and returns an XML node for the custom report item.


The full sample can be downloaded here:
http://www.msnusers.com/ReportingServicesSleazyHacks/Documents/PolygonsCRI.zip
(You'll need to register here first for access: http://www.msnusers.com/ReportingServicesSleazyHacks/join)

For instructions on where to obtain the official sample, see: http://msdn.microsoft.com/en-us/library/ms345265.aspx