只需一步,快速开始
291
401
2545
管理员
假设一个mitk::DataInteractor 具有两个功能: 1.在鼠标所在位置添加点并用直线连接这些点。 2.检查两个点是否在同一位置。
状态机模式1:我们想让用户画一条直线,一个包含三种状态的状态机如下: 每次MousePress事件发生时,AddPoint函数被调用,在鼠标位置添加一个点,除非已添加两个点。 状态机模式2:同样的mitk::DataInteractor可以按如下状态机进行操作,画一个闭合的轮廓。 mitk::DataInteractor能够在已有的点上检测AddPoint事件,并处罚一个PointsMatch事件。
例子: 状态机 <statemachine> <state name="A" startstate="true"> <transition event_class="MousePressEvent" event_variant="StdMousePressPrimaryButton" target="B"/> <state/> <state name="B" /> </statemachine> config文件 <!-- Standard left click --> < config> <event_variant class="MousePressEvent" name="StdMousePressPrimaryButton"> <attribute name="EventButton" value="LeftMouseButton"/> </event_variant> <!-- right click with control key pressed--> < event_variant class="MousePressEvent" name="RightWithCTRL"> <attribute name="EventButton" value="RightMouseButton"/> <attribute name="Modifiers" value="ctrl"/> </event_variant> </config>
使用道具 举报
119
444
1498
版主
48
381
1130
60
408
1219
37
399
1121
本版积分规则 发表回复 回帖并转播 回帖后跳转到最后一页
经常帮助其他会员答疑
积极宣传本站,为本站带来更多注册会员
活跃且尽责职守的版主
曾经为论坛做出突出贡献目前已离职的版主
为论坛做出突出贡献的会员
|关于我们|医维基|网站地图|Archiver|手机版|医疗之家 ( 沪ICP备2023001278号-1 )
GMT+8, 2025-4-11 08:26 , Processed in 0.883999 second(s), 30 queries .
Powered by Discuz! X3.5 Licensed
© 2001-2024 Discuz! Team.