Добрый день!
Нужно написать просмотрщик картинок. Проблема в том, что не знаю как лучше реализовать.
Изначально делал так — хранил в памяти оригинальный Image, параметры скроллов и текущий масштаб.
Из оригинального изображения вырезается нужный кусок (с у четом масштаба и скроллов) и засовывается в PictureBox. При ресайзе или скроллировании обновляю PictureBox путем определения новой области и вставки соответствующего фрагмента. Однако такая схема не очень работает при больших изображениях и большом увеличении — скроллирование подтормаживает.
Собственно само обновление PictureBox происходит так:
// Создаем новое изображение и получаем его графику
Image displImage = (Image)new Bitmap(pictureBoxMain.Width, pictureBoxMain.Height);
Graphics gr = Graphics.FromImage(displImage);
// Засовываем в это изображение фрагмент исходного
gr.DrawImage(currentImage,
new Rectangle(insertX, insertY, insertWidth, insertHeight),
new Rectangle(cropX, cropY, cropWidth, cropHeight),
GraphicsUnit.Pixel);
// Удаляем графику
gr.Dispose();
// Засовываем в элемент формы сформированное изображение
pictureBoxMain.Image = displImage;
Подскажите или дайте ссылку где посмотреть более умную реализацию таких вещей.