Creating Object Model and XML Schema Maps

Several people have asked what program(s) I use to create the object model maps and other technical illustrations I use here on the blog and in the articles I write.

Unsurprisingly, I use Visio. Granted, I may be biased, having worked on the product for several years, but I haven't found any other drawing tool that lets me create, connect, and re-use custom shapes and design elements as easily as Visio does.

Now here's the bad news: while Visio can dynamically generate class structure diagrams from source code, all the object model maps you see in my blog entries and MSDN articles were created the old-fashion way, one shape at a time.

I do it by hand because I want to control the focus of the illustration and what information it includes. Most of the time I only want to illustrate part of an object model or class library, and need to be very selective about the information I want to highlight. I tend to do a large amount of tweaking and massaging to the diagram, for both informational and aesthetic reasons. All in all, it's quicker for me to just start with a blank page and fill it manually, rather than have Visio generate an automated diagram and have to then delete most of it and fold, spindle, and mutilate what's left.

To create the final gif image, I turn off the grid, rulers, and connection points in Visio, and then simply take a screen shot of the image (granted, this doesn't work if your diagram is larger than your monitor display, but MSDN has image size restrictions anyway, so that's not an issue for me.) Just hit ALT + PrintScreen; this puts a bitmap image of the active application onto the clipboard. Once I've got the screen shot, I paste it into Photoshop, crop as necessary, and save it as a gif file. I use Photoshop for two reasons:
a) I already have it loaded on my computer, so I'm familiar with it
b) It's got the best 'save as gif' conversion I've found. I've used a few other image editors, and when I save the bitmap image as a gif in them, the image tends to degrade: color gradients become grainy, and text loses crispness. Not with Photoshop; I just accept the default conversion settings, and I have yet to be disappointed.

Now, using Photoshop for saving screen shots as gifs is like using an elephant gun to hunt squirrel. Since I already have Photoshop, I haven't really looked around for another application that does this well. But if you poke around the web a little, you can probably find something that works just as well for this purpose, either as shareware or at least without Photoshop's hefty price tag. Just look for something that's been optimized to create web-ready graphics.