Occurs when an error happens when the viewer tries to update the item image data.
Object.defineProperty(ImageViewer.prototype,'itemError',
get: function(),
set: function(value)
)
itemError: LeadEvent;
An error might occur if the image viewer is updating the image data of any of the items asynchronously or outside direct user programmatic interaction (such as during the drop part of a drag/drop operation). These operations do not occur from the user code (drop) or occur at a later time after they have been initiated (loading images asynchronously), therefore, the user must attach a handler to the ItemError event to be able to handle these errors.
When value of ImageViewerItem.Url is set to a new value, the image viewer will create a new HTML image
element and use it to load the image data asynchronously using load
and error
events. This can be trigger by any of the following:
ImageViewerItems.AddFromUrl is called
ImageViewerItems.InsertFromUrl is called
ImageViewerItems.UpdateUrl is called
ImageViewerItem.Url is set to a new value
ImageViewer.ImageUrl is set to a new value
If an error occurs, it fires the ItemError event will fire with the following values set in ImageViewerItemErrorEventArgs:
Member | Value |
---|---|
The item that triggered the error |
|
Set to null |
|
The error object |
|
Set to true to automatically remove this item if it did not have previous data. |
When an image or file system item is dragged and dropped over the viewer and AllowDrop was set true, the viewer will try to automatically update or add a new item and load the new image data into it. An error might occur at this point and if so, the ItemError event will fire with the following values set in ImageViewerItemErrorEventArgs:
Member | Value |
---|---|
The item that triggered the error |
|
Set to the instance of ImageViewerItemDragDropEventArgs being used. |
|
The error object |
|
Set to true to automatically remove this item if it did not have previous data. |
import { ImageViewer_Example } from "../ImageViewer";
export class ImageViewer_ItemChangedExample {
private viewerExample;
constructor() {
this.viewerExample = new ImageViewer_Example(this.run);
}
private run = (viewer: lt.Controls.ImageViewer) => {
viewer.itemBorderThickness = 5;
viewer.viewLayout = new lt.Controls.ImageViewerVerticalViewLayout();
const itemChangeReasons: string[] = ["size", "transform", "enabled", "selected", "hovered",
"text", "url", "drop", "drag", "image", "imageChanged", "floater",
"floaterTransform", "backImageUrl", "backImage"];
// Clear the items and add new items
viewer.beginUpdate();
viewer.items.clear();
for (let i = 0; i < 2; i++) {
const item: lt.Controls.ImageViewerItem = new lt.Controls.ImageViewerItem();
item.url = "https://demo.leadtools.com/images/jpeg/cannon.jpg";
item.text = "Item " + i;
viewer.items.add(item);
}
viewer.endUpdate();
const output = document.getElementById("output");
viewer.itemChanged.add((sender, e) => {
let item = e.item;
const lines: string[] = [
"Item Changed: " + viewer.items.indexOf(item),
"Reason: " + itemChangeReasons[e.reason],
"Item Text: " + item.text,
"Url: " + item.url,
];
output.innerHTML = lines.map((line) => { return "<p>" + line + "</p>" }).join("") + "<hr />" + output.innerHTML;
});
viewer.itemError.add((sender, e) => {
const item: lt.Controls.ImageViewerItem = e.item;
const lines: string[] = [
"Item Errored: " + viewer.items.indexOf(item),
"Reason: " + itemChangeReasons[e.reason],
"Url: " + item.url,
];
output.innerHTML = lines.map((line) => { return "<p style='color: red;'>" + line + "</p>" }).join("") + "<hr />" + output.innerHTML;
});
// After a second, change
setTimeout(() => {
// Set a new valid URL and change the text (two different changes)
const item0: lt.Controls.ImageViewerItem = viewer.items.item(0);
item0.url = "https://demo.leadtools.com/images/png/pngimage.png";
item0.text = "Item 0 Text Changed";
// Set an invalid URL
const item1: lt.Controls.ImageViewerItem = viewer.items.item(1);
item1.url = "https://demo.leadtools.com/thisisnotavalidimage.png";
}, 1000);
}
}
export class ImageViewer_Example {
// LEADTOOLS ImageViewer to be used with this example
protected imageViewer: lt.Controls.ImageViewer = null;
// Generic state value used by the examples
public timesClicked: number = 0;
constructor(callback?: (viewer: lt.Controls.ImageViewer) => void) {
// Set the LEADTOOLS license. Replace this with your actual license file
lt.RasterSupport.setLicenseUri("https://demo.leadtools.com/licenses/js/LEADTOOLSEVAL.txt", "EVAL", null);
// Create an image viewer inside the imageViewerDiv element
const imageViewerDiv = document.getElementById("imageViewerDiv");
const createOptions: lt.Controls.ImageViewerCreateOptions = new lt.Controls.ImageViewerCreateOptions(imageViewerDiv);
this.imageViewer = new lt.Controls.ImageViewer(createOptions);
this.imageViewer.viewVerticalAlignment = lt.Controls.ControlAlignment.center;
this.imageViewer.viewHorizontalAlignment = lt.Controls.ControlAlignment.center;
this.imageViewer.autoCreateCanvas = true;
// Add Pan/Zoom interactive mode
// Click and drag to pan, CTRL-Click and drag to zoom in and out
this.imageViewer.interactiveModes.add(new lt.Controls.ImageViewerPanZoomInteractiveMode());
// Load an image
this.imageViewer.imageUrl = "https://demo.leadtools.com/images/jpeg/cannon.jpg";
this.imageViewer.zoom(lt.Controls.ControlSizeMode.fit, .9, this.imageViewer.defaultZoomOrigin);
const exampleButton = document.getElementById("exampleButton");
exampleButton.addEventListener("click", () => {
this.timesClicked++;
// Run the example
if (callback)
callback(this.imageViewer);
});
}
}
import { ImageViewer_Example } from "../ImageViewer";
export class ImageViewer_ItemChangedExample {
viewerExample;
constructor() {
this.viewerExample = new ImageViewer_Example(this.run);
}
run = (viewer) => {
viewer.itemBorderThickness = 5;
viewer.viewLayout = new lt.Controls.ImageViewerVerticalViewLayout();
const itemChangeReasons = ["size", "transform", "enabled", "selected", "hovered",
"text", "url", "drop", "drag", "image", "imageChanged", "floater",
"floaterTransform", "backImageUrl", "backImage"];
// Clear the items and add new items
viewer.beginUpdate();
viewer.items.clear();
for (let i = 0; i < 2; i++) {
const item = new lt.Controls.ImageViewerItem();
item.url = "https://demo.leadtools.com/images/jpeg/cannon.jpg";
item.text = "Item " + i;
viewer.items.add(item);
}
viewer.endUpdate();
const output = document.getElementById("output");
viewer.itemChanged.add((sender, e) => {
let item = e.item;
const lines = [
"Item Changed: " + viewer.items.indexOf(item),
"Reason: " + itemChangeReasons[e.reason],
"Item Text: " + item.text,
"Url: " + item.url,
];
output.innerHTML = lines.map((line) => { return "<p>" + line + "</p>" }).join("") + "<hr />" + output.innerHTML;
});
viewer.itemError.add((sender, e) => {
const item = e.item;
const lines = [
"Item Errored: " + viewer.items.indexOf(item),
"Reason: " + itemChangeReasons[e.reason],
"Url: " + item.url,
];
output.innerHTML = lines.map((line) => { return "<p style='color: red;'>" + line + "</p>" }).join("") + "<hr />" + output.innerHTML;
});
// After a second, change
setTimeout(() => {
// Set a new valid URL and change the text (two different changes)
const item0 = viewer.items.item(0);
item0.url = "https://demo.leadtools.com/images/png/pngimage.png";
item0.text = "Item 0 Text Changed";
// Set an invalid URL
const item1 = viewer.items.item(1);
item1.url = "https://demo.leadtools.com/thisisnotavalidimage.png";
}, 1000);
}
}
export class ImageViewer_Example {
// LEADTOOLS ImageViewer to be used with this example
imageViewer = null;
// Generic state value used by the examples
timesClicked = 0;
constructor(callback) {
// Set the LEADTOOLS license. Replace this with your actual license file
lt.RasterSupport.setLicenseUri("https://demo.leadtools.com/licenses/js/LEADTOOLSEVAL.txt", "EVAL", null);
// Create an image viewer inside the imageViewerDiv element
const imageViewerDiv = document.getElementById("imageViewerDiv");
const createOptions = new lt.Controls.ImageViewerCreateOptions(imageViewerDiv);
this.imageViewer = new lt.Controls.ImageViewer(createOptions);
this.imageViewer.viewVerticalAlignment = lt.Controls.ControlAlignment.center;
this.imageViewer.viewHorizontalAlignment = lt.Controls.ControlAlignment.center;
this.imageViewer.autoCreateCanvas = true;
// Add Pan/Zoom interactive mode
// Click and drag to pan, CTRL-Click and drag to zoom in and out
this.imageViewer.interactiveModes.add(new lt.Controls.ImageViewerPanZoomInteractiveMode());
// Load an image
this.imageViewer.imageUrl = "https://demo.leadtools.com/images/jpeg/cannon.jpg";
this.imageViewer.zoom(lt.Controls.ControlSizeMode.fit, .9, this.imageViewer.defaultZoomOrigin);
const exampleButton = document.getElementById("exampleButton");
exampleButton.addEventListener("click", () => {
this.timesClicked++;
// Run the example
if (callback)
callback(this.imageViewer);
});
}
}
<!doctype html>
<html lang="en">
<title>Controls Example | ItemChanged</title>
<head>
<script src="https://code.jquery.com/jquery-2.2.4.min.js"
integrity="sha256-BbhdlvQf/xTY9gja0Dq3HiwQF8LaCRTXxZKRutelT44=" crossorigin="anonymous"></script>
<script src="../../LT/Leadtools.js"></script>
<script src="../../LT/Leadtools.Controls.js"></script>
<script src="../../LT/Leadtools.Annotations.Engine.js"></script>
<script src="../../LT/Leadtools.Annotations.Designers.js"></script>
<script src="../../LT/Leadtools.Annotations.Rendering.Javascript.js"></script>
<script src="../../LT/Leadtools.Annotations.Automation.js"></script>
<script src="../../LT/Leadtools.ImageProcessing.Main.js"></script>
<script src="../../LT/Leadtools.ImageProcessing.Color.js"></script>
<script src="../../LT/Leadtools.ImageProcessing.Core.js"></script>
<script src="../../LT/Leadtools.ImageProcessing.Effects.js"></script>
<script src="../../LT/Leadtools.Document.js"></script>
<script src="../../LT/Leadtools.Document.Viewer.js"></script>
<style>
body {
font-family: 'Segoe UI', sans-serif;
}
#imageViewerDiv {
border: 1px solid #888;
width: 500px;
height: 500px;
background-color: #eee;
}
</style>
<!-- All demo files are bundled and appended to the window -->
<script src="../../bundle.js" type="text/javascript"></script>
</head>
<body>
<p>Press and drag on the image to pan.</p>
<p>Hold down the control key and press and drag on the image or pinch with two fingers to zoom in and out.</p>
<div>
<button type="button" id="exampleButton">Run Example</button>
</div>
<div id="imageViewerDiv"></div>
<div id="output"></div>
</body>
<script>
window.onload = () => {
const example = new window.examples.ImageViewer.ItemChanged();
};
</script>
</html>
Parameter | Type | Description |
---|---|---|
sender | var | The source of the event. |
e | ImageViewerItemErrorEventArgs | The event data. |
Help Collections
Raster .NET | C API | C++ Class Library | HTML5 JavaScript
Document .NET | C API | C++ Class Library | HTML5 JavaScript
Medical .NET | C API | C++ Class Library | HTML5 JavaScript
Medical Web Viewer .NET
Multimedia
Direct Show .NET | C API | Filters
Media Foundation .NET | C API | Transforms
Supported Platforms
.NET, Java, Android, and iOS/macOS Assemblies
Imaging, Medical, and Document
C API/C++ Class Libraries
Imaging, Medical, and Document
HTML5 JavaScript Libraries
Imaging, Medical, and Document