Estoy creando un visor CAD que trata con archivos de imagen muy grandes y estoy tratando de optimizarlo para una tasa de fotogramas tan alta y baja como sea posible.C# GDI +/System.Drawing.Graphics: ¿crear un buffer y blitting manualmente?
Utiliza GDI + para renderizar en un panel.
Su defecto actual es la representación de imágenes. Algunos de los archivos que estoy usando son imágenes de referencia que son particularmente grandes (8000x8000 píxeles). Optimicé el uso de la memoria al solo cargarlos cuando se vuelven visibles y desecharlos cuando no están visibles. Esto reduce la posibilidad de que el programa se quede sin memoria, pero evita que las imágenes se carguen y descarguen con demasiada frecuencia; sin embargo, representar las imágenes en sí mismas (context.DrawImage) aún conlleva una sobrecarga muy grande.
Ahora estoy explorando maneras de fragmentar las imágenes en un búfer más pequeño de algún tipo, haciendo que este búfer (generalmente mucho más pequeño), y luego refrescar/reconstruir cuando el nivel de zoom cambia significativamente.
El problema es que no puedo encontrar ninguna provisión para esto en absoluto GDI. ¿Alguien puede sugerir cómo podría lograrlo?