在这个话题▼< / div >< div id ="inThisTopicDialog" class="hide">

ImageViewerRubberBandInteractiveMode对象

总结< / div >

吸引观众的形状。

语法< / div >< div id ="mainSourceContainerSyntax">
打印稿< / div >
JavaScript< / div >< / div >
函数lt.Controls.ImageViewerRubberBandInteractiveMode扩展lt.Controls.ImageViewerInteractiveMode
lt.Controls.ImageViewerRubberBandInteractiveMode ()扩展ImageViewerInteractiveMode
讲话< / div >

ImageViewerRubberBandInteractiveMode对象来自ImageViewerInteractiveMode和订阅以下的事件InteractiveService:

ImageViewerRubberBandInteractiveMode工作如下:

  1. 当一个dragStarted收到事件通知,InteractiveEventArgs.isHandled属性设置为真正的HTML5 Canvas元素,和一个临时创建的观众把橡皮筋的形状。使用以下属性自定义它的外观帆布:

形状,BorderColor,边框样式,BorderThickness,RubberBandStarted事件触发。请注意,如果你设定你自己的帆布InteractiveModeCanvas属性,那么这个对象就不会创建一个帆布(不使用上面的属性)。相反,你帆布将被用作橡胶带的表面。

  1. dragDelta收到,InteractiveEventArgs.IsHandled被设置为真正的和临时帆布移动到当前位置。的RubberBandDelta事件触发。

  2. dragCompleted收到,InteractiveEventArgs.IsHandled被设置为真正的,暂时帆布了,RubberBandCompleted事件触发。

ImageViewerRubberBandInteractiveMode交互模式对观众不执行任何行动(除了画画之外,移动,然后删除形状)。由用户实现任何自定义操作要求,(例如,选择一个感兴趣的区域的图像)。ImageViewerZoomToInteractiveMode来源于ImageViewerRubberBandInteractiveMode并调用ImageViewer.zoomToRect在接收RubberBandCompleted事件。画一个用橡皮筋在观众通常是紧随其后的是另一个用户操作执行的行动。在大多数情况下,橡皮筋是被限制在“工作”。的RestrictToWorkBounds可以控制这种行为。

有关更多信息,请参考图像查看器交互模式

例子< / div >

这个例子将使用ImageViewerRubberBandInteractiveMode选择一个图像中感兴趣的区域。当用户完成选择区域,该示例将绘制一个蓝色与黄色边界矩形图像。

提示:点击“例子”前对图像进行放大和锅表明计算获得图像坐标的橡皮筋价值是正确的。

RubberBandInteractiveMode.ts< / div >
ImageViewer.ts< / div >
RubberBandInteractiveMode.js< / div >
ImageViewer.js< / div >
RubberBandInteractiveMode.html< / div >< / div >< div id ="GenericContainerEntry5686" class="GenericContainerEntry">
进口{ImageViewer_Example}从“. . / imageview”;出口ImageViewer_RubberBandInteractiveModeExample {私人viewerExample;构造函数(){.viewerExample =ImageViewer_Example (.run);}私人运行=(观众:lt.Controls.ImageViewer) = > {常量rubberBandMode: lt.Controls。ImageViewerRubberBandInteractiveMode =lt.Controls.ImageViewerRubberBandInteractiveMode ();rubberBandMode.rubberBandCompleted.add((发送方,e) = > {如果(e。isCanceled | | ! rubberBandMode.item)返回;常量点:lt.LeadPointD [] = e.points.map((点)= > {返回point.clone ();});让min = lt.LeadPointD.empty;让max = lt.LeadPointD.empty;(让我= 0;我< points.length;我+ +){[我]= viewer.convertPoint (rubberBandMode点。项,lt.Controls.ImageViewerCoordinateType。控制,lt.Controls.ImageViewerCoordinateType。形象,点[我]);如果(我= = = 0){min =点[我].clone ();max =点[我].clone ();}其他的{min.x = Math.min(最小值。[我]。x x点);min.y = Math.min(最小值。[我].y y点);max。x = Math.max (max。[我]。x x点);max。y = Math.max (max。[我].y y点);}}常量中心:lt.LeadPointD = lt.LeadPointD.create(最小值。x + (max。x - min.x) / 2, min.y + (max。y - min.y) / 2);常量项目:lt.Controls。ImageViewerItem = rubberBandMode.item;常量itemCanvas =项目。帆布as HTMLCanvasElement;常量ctx: CanvasRenderingContext2D = itemCanvas.getContext (“二维”);ctx.save ();ctx.beginPath ();常量矩形:lt.LeadRectD = lt.LeadRectD.fromLTRB(点[0]。x点[0]。y点[1]。x点[1].y);ctx.rect(矩形。x rect.y rect.width rect.height)ctx.closePath ();ctx。fillStyle =“rgba (0, 0 255。2)”;ctx.fill ();ctx。strokeStyle =“黄色”;ctx.stroke ();ctx.restore ();viewer.invalidate (lt.LeadRectD.empty);});rubberBandMode。autoItemMode = lt.Controls.ImageViewerAutoItemMode.autoSet;rubberBandMode。itemPart = lt.Controls.ImageViewerItemPart.image;viewer.interactiveModes.beginUpdate ();viewer.interactiveModes.clear ();viewer.interactiveModes.add (rubberBandMode);viewer.interactiveModes.endUpdate ();}}
出口ImageViewer_Example {/ / LEADTOOLS imageview使用这个例子受保护的imageview: lt.Controls。imageview =;/ /通用状态值所使用的例子公共timesClicked:数量= 0;构造函数(回调?:(viewer: lt.Controls.ImageViewer) =>无效){/ /设置LEADTOOLS许可证。取代你的实际的许可文件lt.RasterSupport.setLicenseUri (“https://demo.leadtools.com/licenses/js/LEADTOOLSEVAL.txt”,“EVAL”,);/ /创建一个图像浏览器内imageViewerDiv元素常量imageViewerDiv = . getelementbyid (“imageViewerDiv”);常量createOptions: lt.Controls。ImageViewerCreateOptions =lt.Controls.ImageViewerCreateOptions (imageViewerDiv);.imageViewer =lt.Controls.ImageViewer (createOptions);.imageViewer。viewVerticalAlignment = lt.Controls.ControlAlignment.center;.imageViewer。viewHorizontalAlignment = lt.Controls.ControlAlignment.center;.imageViewer。autoCreateCanvas =真正的;/ /添加锅/缩放交互模式/ /单击并拖动锅,按住ctrl再点击并拖动放大和缩小.imageViewer.interactiveModes.add (lt.Controls.ImageViewerPanZoomInteractiveMode ());/ /加载一个图像.imageViewer。imageUrl =“https://demo.leadtools.com/images/jpeg/cannon.jpg”;.imageViewer.zoom (lt.Controls.ControlSizeMode。健康,9,.imageViewer.defaultZoomOrigin);常量exampleButton = . getelementbyid (“exampleButton”);exampleButton.addEventListener (“点击”,()= > {.timesClicked + +;/ /运行示例如果(回调)回调(.imageViewer);});}}
进口{ImageViewer_Example}从“. . / imageview”;出口ImageViewer_RubberBandInteractiveModeExample {viewerExample;构造函数(){.viewerExample =ImageViewer_Example (.run);}运行=(观众)= > {常量rubberBandMode =lt.Controls.ImageViewerRubberBandInteractiveMode ();rubberBandMode.rubberBandCompleted.add((发送方,e) = > {如果(e。isCanceled | | ! rubberBandMode.item)返回;常量点= e.points.map((点)= > {返回point.clone ();});让min = lt.LeadPointD.empty;让max = lt.LeadPointD.empty;(让我= 0;我< points.length;我+ +){[我]= viewer.convertPoint (rubberBandMode点。项,lt.Controls.ImageViewerCoordinateType。控制,lt.Controls.ImageViewerCoordinateType。形象,点[我]);如果(我= = = 0){min =点[我].clone ();max =点[我].clone ();}其他的{min.x = Math.min(最小值。[我]。x x点);min.y = Math.min(最小值。[我].y y点);max。x = Math.max (max。[我]。x x点);max。y = Math.max (max。[我].y y点);}}常量中心= lt.LeadPointD.create (min。x + (max。x - min.x) / 2, min.y + (max。y - min.y) / 2);常量项= rubberBandMode.item;常量itemCanvas = item.canvas;常量ctx = itemCanvas.getContext (“二维”);ctx.save ();ctx.beginPath ();常量矩形= lt.LeadRectD.fromLTRB(点[0]。x点[0]。y点[1]。x点[1].y);ctx.rect(矩形。x rect.y rect.width rect.height)ctx.closePath ();ctx。fillStyle =“rgba (0, 0 255。2)”;ctx.fill ();ctx。strokeStyle =“黄色”;ctx.stroke ();ctx.restore ();viewer.invalidate (lt.LeadRectD.empty);});rubberBandMode。autoItemMode = lt.Controls.ImageViewerAutoItemMode.autoSet;rubberBandMode。itemPart = lt.Controls.ImageViewerItemPart.image;viewer.interactiveModes.beginUpdate ();viewer.interactiveModes.clear ();viewer.interactiveModes.add (rubberBandMode);viewer.interactiveModes.endUpdate ();}}
出口ImageViewer_Example {/ / LEADTOOLS imageview使用这个例子imageview =;/ /通用状态值所使用的例子timesClicked = 0;构造函数(回调){/ /设置LEADTOOLS许可证。取代你的实际的许可文件lt.RasterSupport.setLicenseUri (“https://demo.leadtools.com/licenses/js/LEADTOOLSEVAL.txt”,“EVAL”,);/ /创建一个图像浏览器内imageViewerDiv元素常量imageViewerDiv = . getelementbyid (“imageViewerDiv”);常量createOptions =lt.Controls.ImageViewerCreateOptions (imageViewerDiv);.imageViewer =lt.Controls.ImageViewer (createOptions);.imageViewer。viewVerticalAlignment = lt.Controls.ControlAlignment.center;.imageViewer。viewHorizontalAlignment = lt.Controls.ControlAlignment.center;.imageViewer。autoCreateCanvas =真正的;/ /添加锅/缩放交互模式/ /单击并拖动锅,按住ctrl再点击并拖动放大和缩小.imageViewer.interactiveModes.add (lt.Controls.ImageViewerPanZoomInteractiveMode ());/ /加载一个图像.imageViewer。imageUrl =“https://demo.leadtools.com/images/jpeg/cannon.jpg”;.imageViewer.zoom (lt.Controls.ControlSizeMode。健康,9,.imageViewer.defaultZoomOrigin);常量exampleButton = . getelementbyid (“exampleButton”);exampleButton.addEventListener (“点击”,()= > {.timesClicked + +;/ /运行示例如果(回调)回调(.imageViewer);});}}
< !doctype html >< html lang =“en”><标题>控件例子| RubberBandInteractiveMode < /名称><头>< script src =“https://code.jquery.com/jquery-2.2.4.min.js”诚信=“sha256-BbhdlvQf / xTY9gja0Dq3HiwQF8LaCRTXxZKRutelT44 = "crossorigin =“匿名”> < /脚本>< script src =“. . / . . / LT / Leadtools.js”> < /脚本>< script src =“. . / . . / LT / Leadtools.Controls.js”> < /脚本>< script src =“. . / . . / LT / Leadtools.Annotations.Engine.js”> < /脚本>< script src =“. . / . . / LT / Leadtools.Annotations.Designers.js”> < /脚本>< script src =“. . / . . / LT / Leadtools.Annotations.Rendering.Javascript.js”> < /脚本>< script src =“. . / . . / LT / Leadtools.Annotations.Automation.js”> < /脚本>< script src =“. . / . . / LT / Leadtools.ImageProcessing.Main.js”> < /脚本>< script src =“. . / . . / LT / Leadtools.ImageProcessing.Color.js”> < /脚本>< script src =“. . / . . / LT / Leadtools.ImageProcessing.Core.js”> < /脚本>< script src =“. . / . . / LT / Leadtools.ImageProcessing.Effects.js”> < /脚本>< script src =“. . / . . / LT / Leadtools.Document.js”> < /脚本>< script src =“. . / . . / LT / Leadtools.Document.Viewer.js”> < /脚本><时尚>身体{字体类型:“Segoe UI”无衬线;}# imageViewerDiv {边界:1 px固体# 888;宽度:500 px;身高:500 px;background - color: # eee;}> < /风格< !——所有演示文件捆绑和附加到窗口- - >< script src =“. . / . . / bundle.js”类型=“text / javascript”> < /脚本>< / >头<身体>< p >新闻并拖动图像锅。< / p >< p >按住控制键和按下并拖动图像或捏两个手指来放大< / p >。< div ><按钮类型=“按钮”id =“exampleButton”> > < /按钮运行例子< / div >< div id =“imageViewerDiv”> < / div >< div id =“输出”> < / div >< /身体><脚本>窗口。onload = () = > {常量示例=window.examples.InteractiveMode.RubberBandInteractiveMode ();};> < /脚本< / html >
需求< / div >目标平台
帮助21.0.2021.7.2版本< / div >< !--BEGIN Copyright notice--> 188金宝搏的网址客服|支持|联系我们|知识产权的通知
©1991 - 2021领先的技术公司。保留所有权利。< !--END Copyright notice-->
Leadtools。控制装置< / div >