Я создаю CAD Viewer, который работает с очень большими файлами изображений, и я пытаюсь оптимизировать его для максимально высокой частоты кадров и минимального объема памяти.
Используется GDI + для рендеринга на панель.
Это текущий недостаток рендеринга изображений. Некоторые из файлов, которые я использую, являются эталонными изображениями, которые являются особенно большими (8000x8000 пикселей). Я оптимизировал использование памяти, загружая их только тогда, когда они становятся видимыми, и избавляясь от них, когда их нет. Это уменьшает вероятность того, что программе не хватит памяти, но предотвращает слишком частую загрузку и выгрузку изображений; однако рендеринг самих изображений (context.DrawImage) все еще несет в себе очень большие накладные расходы.
Сейчас я изучаю способы переноса изображений в некоторый некоторый буфер, рендеринга этого (как правило, гораздо меньшего) буфера, а затем его обновления / восстановления при значительном изменении уровня масштабирования.
Проблема в том, что я не могу найти никакого условия для этого в GDI вообще. Кто-нибудь может подсказать, как мне этого добиться?