in reply to Graphics for a waveform viewer

I would go with zentara's suggestion to just do normal xy plotting on a canvas widget. "Good old Perl/Tk" might a tad slow if you have lots of data points per display, but there's Inline::C and clever tricks for data reduction in case you are trying to put (say) pu to 200,000 sample points onto a time line that's only 1000 pixels wide. But you already plan on using something newer than that, and speed probably won't be much of an issue. As for this point:

I figure {vector graphics} would make zooming in and out less painful.

In terms of time-series waveform data, it's fairly typical to want to control the vertical and horizontal zoom independently -- e.g. zoom in or out on just the y-axis scale according to the amplitude of (the portion of) the waveform that happens to be on display at the moment, or zoom in or out on just the x-axis scale in order to see either more detail or more data in the window. Maybe vector graphics does this very elegantly, but if your xy-plot rendering is reasonably fast, it's just as good to redraw however many dots or line segments are needed to fill a 1000-pixel-wide display of a time series.