Tengo cierta experiencia en el dibujo de imágenes satelitales y de gráficos de varios gigabytes. Trabajar con imágenes de alrededor de 55MB probablemente debería funcionar bien incluso sin intentar optimizarlo demasiado. Realmente no has dado suficientes detalles para recomendar una alternativa sobre la otra, así que daré mi opinión sobre los pros y los contras.
El uso de ventanas API 2D será la más simple de implementar y siempre debe ser lo suficientemente rápido si no necesita girar y simplemente desea mostrar una imagen y hacer zoom y desplazarse. Si lo trata como una imagen grande, el rendimiento no será tan bueno cuando aleje la imagen si está dibujando con medios tonos para obtener una imagen suave y agradable. Esto se debe a que efectivamente tendrá que leer todos los 55mb de imagen cada vez que se dibuje.
Para evitar este problema de rendimiento puede hacer mapas de bits múltiples, mapeo de mapas de su imagen. A medida que aleja, puede elegir la imagen de resolución reducida más cercana a la resolución que está tratando de dibujar. Si no está familiarizado con el mapeo MIP aquí es un enlace Wikipedia:
http://en.wikipedia.org/wiki/Mipmap
Implementar con DirectX habrá 10 veces tan difícil. Hardware de gráficos diferentes tiene diferentes tamaños de textura máxima. Lo más probable es que necesite dividir su imagen en varias texturas para dibujar y también deberá realizar un seguimiento de los estados de procesamiento, matrices de visualización, etc.
Sin embargo, si usa DirectX, puede implementar muchos Ajustes de fotos en tiempo real Puede hacer rotaciones en tiempo real simplemente ajustando las matrices de visualización. Puede hacer contraste, brillo, gamma y nitidez en tiempo real fácilmente en un sombreador de píxeles.
Hay otras dos API que podría sugerir. Si está dispuesto a limitarse a Vista o más tarde, Direct2D sería un poco más simple que Direct3D. Además, si alguna vez necesitas implementarlo en una plataforma que no sea de Windows, te sugiero usar OpenGL en su lugar. Mi proyecto actual está en Direct3D porque hace unos años, cuando comenzamos, OpenGL se estaba quedando atrás y no preveía la popularidad de los dispositivos Android. Ahora desearía haber usado OpenGL en su lugar.
Muestra la imagen completa, o solo partes de ella. Si usa un scrollviewer, solo carga lo que necesita en la memoria –
@JustinPihony mostrando la imagen completa. –
solo recuerda directx! = Directx. También depende de la envoltura de directx que esté usando.Como ejemplo, SlimDX o sharpdx tienen un mejor rendimiento que xna o Managed DirectX. Pero, en general, no creo que obtengas un rendimiento mucho mejor. –