We wanted to avoid that in WPF but it turned out to not be possible. Basically TIFF stands for Thousands of Incompatible File Formats. Too many things to mess with. Even LibTIFF could not handle all the formats we use. Back to 3rd party time.
This means investigation of various 3rd party controls to see which one is the best. Not ready to name names at this point but I did pick three to choose from.
Vendor #1 had annotation support but does not appear to support custom annotations. They are willing to do that at a price of course. Not looking to go that direction at this point. We do use their stuff on the C++ side now but we manually draw on top of their image. Something that is not possible even with and adorner layer in WPF. On-line support seems non-existent. You can email them but there is no on-line forum.
Vendor #2 has custom annotations but they only support their toolbar and their buttons. We are trying to rip that apart and put our own images in there along with custom annotations. Another guy I work with is dealing with that one. The other issue so far is they don't scale fonts for the text annotations to match the image scale. Ugly. They have a on-line forum that seems pretty active.
Vendor #3 is winning so far as their custom annotations appear to work nicely. You do have to create a Geometry for the rendering but that has been reasonable so far. I need to deal with text in there in near future so we shall see how that goes. The first problem is when I switch tabs I can no longer edit my annotations. I have the viewer in one tab and the thumbnails in another. Something in the viewer is getting annoyed by the tab switch. The second problem is printing. The image is getting cut off during printing at this point. I need to try a lot of other image formats to see if it is a particular image type. They have very responsive on-line support and are looking into this for me now. The on-line forum does not have much activity.
Next week I will continue to work with Vendor #3 to hash out these details and to try and implement a context menu. The other developer will continue to try and catch up Vendor #2 mock up code to what I have with Vendor #3 and we have a follow phone call with Vendor #1. I wish would could get them all to work and then pick the best on speed, DLL size or image format support instead of picking one by default because it is the only one we could get to work.