基类提供了丰富的用户体验特性imageview.
公共摘要类ImageViewerInteractiveMode
公共mustlinherit类ImageViewerInteractiveMode
公共ref类ImageViewerInteractiveMode摘要
ImageViewerInteractiveMode与InteractiveService对象的imageview当用户使用鼠标或触摸与查看器交互时,提供丰富的用户界面体验。
ImageViewerInteractiveMode是一个基抽象类:从它可以派生自己的类来处理与查看器的自定义交互。有关LEADTOOLS提供的开箱即用模式的更多信息和列表,请参阅图像查看器交互模式.
ImageViewerInteractiveMode具有以下功能:
| 成员 | 描述 |
|---|---|
| WorkingCursor,IdleCursor和HitTestStateCursor | 当交互模式处于空闲、工作或命中测试状态时使用的光标(适用于桌面浏览器)。 |
| MouseButtons |
附加到此模式的鼠标按钮(用于桌面浏览器) |
要使用交互模式,您可以创建任何派生类的实例,并使用以下方法之一将其分配给查看器:
imageview。DefaultInteractiveMode:将交互模式分配给桌面浏览器的鼠标左键或支持触摸的设备上的默认触摸事件。
imageview。InteractiveModes:向查看器添加多个交互模式。
的事件附加侦听器InteractiveService根据用户输入执行操作。集InteractiveEventArgs。IsHandled来真正的将事件标记为已处理,以便其他交互模式也不会响应该事件。
您可以同时使用多种交互模式。例如,使用下面的代码来支持用鼠标左键平移/缩放和用右键放大玻璃:
这个例子将创建一个自定义ImageViewerInteractiveMode这将在用户点击或触摸和拖动查看器时旋转图像。
使用Leadtools;使用Leadtools.Controls;使用Leadtools.Codecs;使用Leadtools.Drawing;使用Leadtools.ImageProcessing;使用Leadtools.ImageProcessing.Color;私人类TransformInteractiveMode: ImageViewerInteractiveMode{公共TransformInteractiveMode ():基地(){这.AutoItemMode = ImageViewerAutoItemMode.AutoSet;}私人Keys _scaleKeyModifier = Keys. control;公共虚拟键ScaleKeyModifier{得到{返回_scaleKeyModifier;}集{//支持none和any修饰符开关(值){情况下钥匙。没有:情况下钥匙。Alt:情况下钥匙。转变:情况下钥匙。控制:_scaleKeyModifier = value;打破;默认的:扔新ArgumentException (“无效的价值”,“ScaleKeyModifier”);}}}私人Keys _rotateKeyModifier = Keys. alt;公共虚拟键RotateKeyModifier{得到{返回_rotateKeyModifier;}集{//支持none和any修饰符开关(值){情况下钥匙。没有:情况下钥匙。Alt:情况下钥匙。转变:情况下钥匙。控制:_rotateKeyModifier = value;打破;默认的:扔新ArgumentException (“无效的价值”,“PageKeyModifier”);}}}公共覆盖字符串名字{得到{返回“转换”;}}公共覆盖intId{得到{返回ImageViewerInteractiveMode。UserModeId + 3;}}公共覆盖无效开始(imageview imageview){基地.Start (imageview);var服务=基地.InteractiveService;//平移所需事件服务。DragStarted + =新EventHandler < InteractiveDragStartedEventArgs > (service_DragStarted);服务。DragDelta + =新EventHandler < InteractiveDragDeltaEventArgs > (service_DragDelta);服务。DragCompleted + =新EventHandler < InteractiveDragCompletedEventArgs > (service_DragCompleted);服务。DoubleTap + =新EventHandler < InteractiveEventArgs > (service_DoubleTap);}公共覆盖无效停止(imageview imageview){如果(IsStarted){var服务=基地.InteractiveService;服务。DragStarted - =新EventHandler < InteractiveDragStartedEventArgs > (service_DragStarted);服务。DragDelta - =新EventHandler < InteractiveDragDeltaEventArgs > (service_DragDelta);服务。DragCompleted - =新EventHandler < InteractiveDragCompletedEventArgs > (service_DragCompleted);服务。DoubleTap - =新EventHandler < InteractiveEventArgs > (service_DoubleTap);基地鸡毛蒜皮(imageview);}}私人无效service_DragStarted (对象发送者:InteractiveDragStartedEventArgs{//确保pinch没有工作,否则,忽略pan如果(!这.CanStartWork (e))返回;//确保我们在一个项目上如果(这.Item = =零)返回;e.IsHandled =真正的;这.OnWorkStarted (EventArgs.Empty);}私人无效service_DragDelta (对象发送器:InteractiveDragDeltaEventArgs{如果(!这.IsWorking)返回;var项=这.Item;如果(项目= =零)返回;//找出该做什么vardx = e.Change.X;vardy = e.Change.Y;如果(dx == 0 && dy == 0)返回;varscaleKeyModifier =这.ScaleKeyModifier;varrotateKeyModifier =这.RotateKeyModifier;varscale =(控制。ModifierKeys& scaleKeyModifier) == scaleKeyModifier;varrotate =(控制。ModifierKeys& rotateKeyModifier) == rotateKeyModifier;varimageview =这.ImageViewer;如果(规模){Scale(imageViewer, item, dy, e.Origin);}其他的如果(旋转){旋转(imageViewer, item, dx, e.Origin);}其他的{翻译(imageViewer, item, dx, dy);}e.IsHandled =真正的;}私人无效service_DragCompleted (对象发送者:InteractiveDragCompletedEventArgs{如果(!这.IsWorking)返回;e.IsHandled =真正的;OnWorkCompleted (EventArgs.Empty);}私人无效service_DoubleTap (对象发送器,InteractiveEventArgs{//确保我们没有工作如果(这正在工作|| !这.CanStartWork (e))返回;//确保我们有一个项目var项=这.Item;如果(项目= =零)返回;e.IsHandled =真正的;这.OnWorkStarted (EventArgs.Empty);身份(这.ImageViewer、项);这.OnWorkCompleted (EventArgs.Empty);}私人无效标识(ImageViewer ImageViewer, ImageViewerItem项){项。变换= LeadMatrix.Identity;}私人无效缩放(ImageViewer ImageViewer, ImageViewerItem项,intdy,引点位置){/ /……//设置比例代码/ /……}私人无效旋转(ImageViewer ImageViewer ImageViewerItem项,intdx,领点位置){/ /……//设置旋转代码/ /……}私人无效翻译(ImageViewer ImageViewer ImageViewerItem项,intdx,intdy){/ /……//设置翻译代码/ /……}}公共无效ImageViewerInteractiveMode_Example (){_imageViewer.InteractiveModes.BeginUpdate ();_imageViewer.InteractiveModes.Add (新TransformInteractiveMode {IsEnabled =假});/ /……/ /……/ /……_imageViewer.InteractiveModes.EndUpdate ();}
进口Leadtools进口Leadtools。控制进口Leadtools。编解码器进口Leadtools。画进口Leadtools。ImageProcessing进口Leadtools.ImageProcessing.Color私人类TransformInteractiveMode:继承了ImageViewerInteractiveMode公共子新()MyBase.新()我. autoitemmode = ImageViewerAutoItemMode。AutoSet结束子私人_scaleKeyModifier作为钥匙=钥匙。控制公共重写的财产ScaleKeyModifier ()作为键得到返回_scaleKeyModifier结束得到集(值作为键)'支持none和any修饰符选择情况下价值情况下钥匙。没有,钥匙。Alt键。转变,钥匙。控制_scaleKeyModifier = value情况下其他的扔新ArgumentException (“无效的价值”,“ScaleKeyModifier”)结束选择结束集结束财产私人_rotateKeyModifier作为钥匙=钥匙。Alt公共重写的财产RotateKeyModifier ()作为键得到返回_rotateKeyModifier结束得到集(值作为键)'支持none和any修饰符选择情况下价值情况下钥匙。没有,钥匙。Alt键。转变,钥匙。控制_rotateKeyModifier = value情况下其他的扔新ArgumentException (“无效的价值”,“PageKeyModifier”)结束选择结束集结束财产公共覆盖只读的财产名称()作为字符串得到返回“转换”结束得到结束财产公共覆盖只读的财产Id ()作为整数得到返回ImageViewerInteractiveMode。UserModeId + 3结束得到结束财产公共覆盖子开始(按值传递imageview作为imageview)MyBase.Start (imageview)昏暗的服务作为InteractiveService =MyBase.InteractiveService' Pan所需事件AddHandler服务。DragStarted,AddressOfservice_DragStartedAddHandler服务。DragDelta,AddressOfservice_DragDeltaAddHandler服务。DragCompleted,AddressOfservice_DragCompletedAddHandler服务。DoubleTap,AddressOfservice_DoubleTap结束子公共覆盖子(停止) (按值传递imageview作为imageview)如果IsStarted然后昏暗的服务作为InteractiveService =MyBase.InteractiveServiceRemoveHandler服务。DragStarted,AddressOfservice_DragStartedRemoveHandler服务。DragDelta,AddressOfservice_DragDeltaRemoveHandler服务。DragCompleted,AddressOfservice_DragCompletedRemoveHandler服务。DoubleTap,AddressOfservice_DoubleTapMyBase.停止(imageview)结束如果结束子私人子service_DragStarted (按值传递发送方作为对象,按值传递e作为InteractiveDragStartedEventArgs)确保pinch没有工作,否则,忽略pan如果(不我.CanStartWork (e))然后返回结束如果“确保我们在做一个项目如果我.Item是没有什么然后返回结束如果e.IsHandled =真正的我.OnWorkStarted (EventArgs.Empty)结束子私人子service_DragDelta (按值传递发送方作为对象,按值传递e作为InteractiveDragDeltaEventArgs)如果(不我.IsWorking)然后返回结束如果昏暗的项作为ImageViewerItem =我.Item如果项是没有什么然后返回结束如果“想想该怎么做昏暗的dx作为整数= e.Change.X昏暗的dy作为整数= e.Change.Y如果Dx = 0需要说明Dy = 0然后返回结束如果昏暗的scaleKey作为键=我.ScaleKeyModifier昏暗的rotateKey作为键=我.RotateKeyModifier昏暗的doScale作为布尔=(控制。ModifierKeys和scaleKey) = scaleKey昏暗的doRotate作为布尔=(控制。ModifierKeys和rotateKey) = rotateKey昏暗的imageview作为imageview =我.ImageViewer如果doScale然后缩放(imageViewer, item, dy, e.Origin)ElseIfdoRotate然后旋转(imageViewer, item, dx, e.Origin)其他的翻译(imageViewer, item, dx, dy)结束如果e.IsHandled =真正的结束子私人子service_DragCompleted (按值传递发送方作为对象,按值传递e作为InteractiveDragCompletedEventArgs)如果(不我.IsWorking)然后返回结束如果e.IsHandled =真正的OnWorkCompleted (EventArgs.Empty)结束子私人子service_DoubleTap (按值传递发送方作为对象,按值传递e作为InteractiveEventArgs)“确保我们没有在工作如果我.IsWorkingOrElse(不我.CanStartWork (e))然后返回结束如果“确保我们有一个项目昏暗的项作为ImageViewerItem =我.Item如果项是没有什么然后返回结束如果e.IsHandled =真正的我.OnWorkStarted (EventArgs.Empty)身份(我.ImageViewer项)我.OnWorkCompleted (EventArgs.Empty)结束子私人子身份(按值传递imageview作为imageview,按值传递项作为ImageViewerItem)项。Transform = LeadMatrix。身份结束子私人子量表(按值传递imageview作为imageview,按值传递项作为ImageViewerItem,按值传递dy作为整数,按值传递位置作为LeadPoint)“…'集比例码“…结束子私人子旋转(按值传递imageview作为imageview,按值传递项作为ImageViewerItem,按值传递dx作为整数,按值传递位置作为LeadPoint)“…'设置旋转代码“…结束子私人子翻译(按值传递imageview作为imageview,按值传递项作为ImageViewerItem,按值传递dx作为整数,按值传递dy作为整数)“…'集转换代码“…结束子结束类公共子ImageViewerInteractiveMode_Example ()_imageViewer.InteractiveModes.BeginUpdate ()昏暗的模式作为新TransformInteractiveMode模式。是Enabled =假_imageViewer.InteractiveModes.Add(模式)“…“…“…_imageViewer.InteractiveModes.EndUpdate ()结束子
帮助收藏
光栅net|C API|c++类库|HTML5 JavaScript
文档net|C API|c++类库|HTML5 JavaScript
医疗net|C API|c++类库|HTML5 JavaScript
医疗网络查看器net
188宝金博怎么下载
支持的平台上
.NET、Java、Android和iOS/macOS程序集
C API/ c++类库
HTML5 JavaScript库
您的邮件已发送给技术支持!应该有人联系!如果你的事情很紧急,请回来聊天。
聊天时间:
周一至周五,美国东部时间上午8:30至下午6:00
感谢您的反馈!
请再次填写表格,开始新的聊天。
所有代理目前都离线。
聊天时间:
星期一至星期五
美国东部时间上午8:30 -下午6点
如需与我们联系,请填写此表格,我们将通过电子邮件与您联系。
