Dieser Artikel beschreibt die Verwendung der
ImageMapTool-Klasse aus dem
VintaSoft Imaging .NET SDK zum Anzeigen großer und extra großer Bilder.
Nehmen wir als Beispiel ein JPEG2000-Bild mit einer Bildgröße von 4067 Megapixeln (35878 × 113378 Pixel).
Hier ist der Screenshot von JPEG2000-Bild mit 1% Zoom in
VintaSoft Imaging Demo:
Hier ist der Screenshot des JPEG2000-Bildes mit 10% Zoom in
VintaSoft Imaging Demo:
Beim Betrachten sehr großer Bilder ist es oft schwierig zu erkennen, in welchem Bildausschnitt man sich gerade befindet und wohin man navigieren muss, um die gewünschte Position zu erreichen. Normalerweise lässt sich dieses Problem beheben, indem man das Bild verkleinert und anschließend den gewünschten Bereich vergrößert. Ist die Bilddekodierung jedoch ressourcenintensiv, kann dies unakzeptabel lange dauern. Die Verwendung einer Image-Map mithilfe der Klasse
ImageMapTool ist eine komfortable und elegante Lösung für dieses Problem.
In der
VintaSoft Imaging Demo kann die Image-Map über den Menüpunkt "Ansicht -> Image-Map-Einstellungen..." aktiviert werden. Der folgende Screenshot zeigt die Image-Map-Einstellungen in
VintaSoft Imaging Demo:
Die Image Map ist ein kleiner Bildbetrachter, der sich über dem Hauptbildbetrachter befindet und dasselbe Bild in einem anderen Skalierungsmodus anzeigt. Der folgende Screenshot zeigt die Einstellungen der Bildkarte mit einem Skalierungsfaktor von 1/25 relativ zum aktuellen Zoomfaktor des Hauptbildbetrachters:
ImageMapTool-Klasse:
- Ermöglicht die Navigation zum gewünschten Bildausschnitt per Mausklick
- Ermöglicht die Anzeige des gesamten Bildes oder die Skalierung des Bildes relativ zur aktuellen Skalierung des Hauptbildes
- Ermöglicht die Anzeige des Rechtecks mit dem sichtbaren Bildbereich
- Ermöglicht die Anzeige des Rechtecks mit dem zwischengespeicherten Bildbereich
- Jede Instanz der ImageMapTool-Klasse verwendet denselben Cache und Renderer wie der Hauptbildbetrachter - dies garantiert höchste Leistung.
Die Eigenschaft
ImageViewer.ViewerBufferSize ermöglicht es, die Größe des vollständig zwischengespeicherten Bereichs um den sichtbaren Bereich (gelbes Rechteck) im Bildbetrachter in Megapixeln festzulegen. Der folgende Screenshot zeigt die Einstellungen des Bildbetrachters mit einer Größe von 6 Megapixeln für den zwischengespeicherten Bereich um den sichtbaren Bereich:
Außerdem Bei sehr großen Bildern ist es möglich, mehrere
ImageMapTool-Elemente gleichzeitig im Bildbetrachter zu verwenden, jedes mit unterschiedlicher relativer Skalierung. Dies ist dank der
CompositeVisualTool-Klasse möglich, die die Funktionalität mehrerer visueller Werkzeuge kombiniert.
Hier ist C#-Code, der zeigt, wie 2 Bildkarten im Bildbetrachter erstellt werden:
// create the first image map tool
Vintasoft.Imaging.UI.VisualTools.ImageMapTool imageMap1 = new Vintasoft.Imaging.UI.VisualTools.ImageMapTool();
// specify that image map must be enabled
imageMap1.Enabled = true;
// specify that image map tool must show image in best fit mode
imageMap1.Zoom = 0;
// specify that image map must have size 200x200 pixels
imageMap1.Size = new System.Drawing.Size(200, 200);
// specify that image map must be shown at the left-top corner of image viewer
imageMap1.Anchor = Vintasoft.Imaging.UI.AnchorType.Left | Vintasoft.Imaging.UI.AnchorType.Top;
// specify that image map tool border must have red color
imageMap1.CanvasPen = new System.Drawing.Pen(System.Drawing.Color.Red);
// specify that the border of image's visible region in image map must have lime color
imageMap1.VisibleRectPen = new System.Drawing.Pen(System.Drawing.Color.Lime);
// create the second image map tool
Vintasoft.Imaging.UI.VisualTools.ImageMapTool imageMap2 = new Vintasoft.Imaging.UI.VisualTools.ImageMapTool();
// specify that image map must be enabled
imageMap2.Enabled = true;
// specify that image map tool must show image in 1/25 scale from image viewer zoom
imageMap2.Zoom = 1 / 25f;
// specify that image map must have size 200x200 pixels
imageMap1.Size = new System.Drawing.Size(200, 200);
// specify that image map must be shown at the left-bottom corner of image viewer
imageMap2.Anchor = Vintasoft.Imaging.UI.AnchorType.Left | Vintasoft.Imaging.UI.AnchorType.Bottom;
// specify that image map tool border must have red color
imageMap2.CanvasPen = new System.Drawing.Pen(System.Drawing.Color.Red);
// specify that the border of image's visible region in image map must have lime color
imageMap2.VisibleRectPen = new System.Drawing.Pen(System.Drawing.Color.Lime);
// create composite visual tool that combines first and second image map tools
Vintasoft.Imaging.UI.VisualTools.CompositeVisualTool compositeVisualTool = new Vintasoft.Imaging.UI.VisualTools.CompositeVisualTool(imageMap1, imageMap2);
// set composite visual tool as current visual tool of image viewer
imageViewer1.VisualTool = compositeVisualTool;
Der folgende Screenshot zeigt den Bildbetrachter mit 2 Bildkarten: