В этой статье рассказывается как использовать класс Vintasoft.Imaging.UI.VisualTools.ImageMapTool
из
VintaSoft Imaging .NET SDK
для навигации по большим и очень большим изображениям.
В качестве примера возьмем JPEG2000 изображение размером 4067 мегапикселей (35878х113378 пикселей).
Вот как выглядит изображение в масштабе 1% в
VintaSoft Imaging Demo:
Вот как выглядит изображение в масштабе 10% в
VintaSoft Imaging Demo:
При просмотре очень большого изображения часто сложно определить, какую часть изображения Вы рассматриваете в данный момент и куда нужно двигаться, чтобы посмотреть требуемую часть изображения.
В общем случае для решения этой проблемы можно уменьшить масштаб изображения, чтобы стало понятно где Вы находитесь, переместиться в нужную точку изображения и увеличить изображение до нужного масштаба.
Но данное решение может потребовать большого количества вычислительных ресурсов, потому что требуется отобразить очень большое изображение в разных масштабах.
Использование карты изображения с помощью класса Vintasoft.Imaging.UI.VisualTools.ImageMapTool
является удобным и эффективным решением проблемы.
В
VintaSoft Imaging Demo включить карту изображения в просмотрщике изображения можно с помощью меню "View -> Image Map Settings...".
Вот как выглядят настройки карты изображения:
В реальности карта изображения является маленьким просмотрщиком изображения, который расположен над главным просмотрщиком изображения и показывает изображение из главного просмотрщика изображения,
но с другим масштабом. Вот настройки карты изображения с масштабом 1/25 к масштабу главного просмотрщика изображения:
Класс Vintasoft.Imaging.UI.VisualTools.ImageMapTool:
- позволяет перемещаться к желаемой части изображения в главном просмотрщике изображения с помощью клика мышью
- позволяет видеть всё изображение или просматривать изображение в масштабе относительно масштаба главного просмотрщика изображения
- позволяет отобразить прямоугольник видимой области изображения, по умолчанию прямоугольник зеленого цвета
- позволяет отобразить прямоугольник закешированной области изображения, по умолчанию прямоугольник желтого цвета
- экземпляр класса Vintasoft.Imaging.UI.VisualTools.ImageMapTool
использует тот же самый кеш и рендерер, что и главный просмотрщик изображений - это гарантирует максимальное быстродействие
Свойство Vintasoft.Imaging.UI.ImageViewer.ViewerBufferSize позволяет задать
размер, в мегапикселях, кешируемой области изображения вокруг видимой области в просмотрщике изображений.
Вот настройки просмотрщика изображений с размером кешированной области изображения вокруг видимой области равной 6 магапикселов:
Кроме того, для очень очень больших изображений можно использовать несколько карт изображения на главном просмотрщике изображения, причем каждая карта со своим масштабом.
Для использования нескольких карт изображения необходимо использовать класс Vintasoft.Imaging.UI.VisualTools.CompositeVisualTool,
который позволяет объединить несколько визуальных инструментов.
Вот C# код, который позволяет создать две карты изображения в просмотрщике изображений:
// создать первый визуальный инструмент карту изображения
Vintasoft.Imaging.UI.VisualTools.ImageMapTool imageMap1 = new Vintasoft.Imaging.UI.VisualTools.ImageMapTool();
// указать, что карта изображения должна быть включена
imageMap1.Enabled = true;
// указать, что визуальный инструмент карта изображения должен показывать изображение в режиме BestFit
imageMap1.Zoom = 0;
// указать, что карта изображения должна иметь размер 200x200 пикселей
imageMap1.Size = new System.Drawing.Size(200, 200);
// указать, что карта изображения должна быть отображена в левом-верхнем углу просмотрщика изображений
imageMap1.Anchor = Vintasoft.Imaging.UI.AnchorType.Left | Vintasoft.Imaging.UI.AnchorType.Top;
// указать, что бордюр карты изображения должен иметь красный цвет
imageMap1.CanvasPen = new System.Drawing.Pen(System.Drawing.Color.Red);
// указать, что бордюр области, которая видна в просмотрщике изображений, на карте изображения должен иметь салатовый цвет
imageMap1.VisibleRectPen = new System.Drawing.Pen(System.Drawing.Color.Lime);
// создать второй визуальный инструмент карту изображения
Vintasoft.Imaging.UI.VisualTools.ImageMapTool imageMap2 = new Vintasoft.Imaging.UI.VisualTools.ImageMapTool();
// указать, что карта изображения должна быть включена
imageMap2.Enabled = true;
// указать, что визуальный инструмент карта изображения должен показывать изображение с масштабом 1/25 к масштабу в просмотрщике изображений
imageMap2.Zoom = 1 / 25f;
// указать, что карта изображения должна иметь размер 200x200 пикселей
imageMap1.Size = new System.Drawing.Size(200, 200);
// указать, что карта изображения должна быть отображена в левом-нижнем углу просмотрщика изображений
imageMap2.Anchor = Vintasoft.Imaging.UI.AnchorType.Left | Vintasoft.Imaging.UI.AnchorType.Bottom;
// указать, что бордюр карты изображения должен иметь красный цвет
imageMap2.CanvasPen = new System.Drawing.Pen(System.Drawing.Color.Red);
// указать, что бордюр области, которая видна в просмотрщике изображений, на карте изображения должен иметь салатовый цвет
imageMap2.VisibleRectPen = new System.Drawing.Pen(System.Drawing.Color.Lime);
// создать композитный визуальный инструмент, который позволяет использовать вместе первую и вторую карты изображения
Vintasoft.Imaging.UI.VisualTools.CompositeVisualTool compositeVisualTool = new Vintasoft.Imaging.UI.VisualTools.CompositeVisualTool(imageMap1, imageMap2);
// установить композитный визуальный инструмент как текущий визуальный инструмент в просмотрщике изображений
imageViewer1.VisualTool = compositeVisualTool;
Вот просмотрщик изображений с двумя картами изображения: