Como implementar pan / zoom em bitmaps gigapixel?

No meu projeto, estou usando imagens gigapixel (descompactadas em escala de cinza de 16 bits) que vêm de um scanner de alta resolução para fins de medição. Como esses bitmaps não podem ser carregados na memória (principalmente devido à fragmentação da memória), estou usando blocos (e o TIFF lado a lado no disco). (VejoStackOverflow tópico sobre este)

Preciso implementar o panorama / zoom de uma maneira como o Google Maps ou DeepZoom. Eu tenho que aplicar o processamento de imagem rapidamente antes de apresentá-lo na tela, para não poder usar uma biblioteca pré-cozinhada que acesse diretamente um arquivo de imagem. Para aumentar o zoom, pretendo manter uma imagem com várias resoluções no meu arquivo (armazenamento em pirâmide). As etapas mais úteis parecem ser + 200%, 50% e mostram tudo.

Atualmente, minha base de código é C # e .NET 3.5. Atualmente, assumo o tipo Forms, a menos que o WPF me dê uma grande vantagem nessa área. Eu tenho um método que pode retornar qualquer parte (processada) da imagem subjacente.

Questões específicas:

dicas ou referências sobre como implementar esse panorama / zoom com geração sob demanda de partes da imagemqualquer código que possa ser usado como base (de preferência licenças comerciais ou LGPL / BSD)o DeepZoom pode ser usado para isso (ou seja, existe uma maneira de fornecer uma função para fornecer um bloco com a resolução correta para o nível de zoom atual?) (ainda preciso ter um endereço preciso de pixel)

questionAnswers(3)

yourAnswerToTheQuestion