@startuml state [*] --> 鼠标左键按下 鼠标左键按下 --> 创建模式 : 在工具栏选择了一个图形 state 创建模式{ 创建图形中鼠标移动 --> 创建图形中鼠标弹起 创建图形中鼠标弹起 --> [*] 创建图形中鼠标弹起 : 记录操作命令 } state 矩形选择模式{ 鼠标左键按下 : 记录鼠标位置 鼠标左键按下 --> 矩形选择起始 : 原先没有选择图形,这次也没有 矩形选择起始 --> 矩形选择中鼠标移动 矩形选择中鼠标移动 --> 矩形选择中鼠标弹起 矩形选择中鼠标弹起 : 记录操作命令 矩形选择中鼠标弹起 --> [*] } 鼠标左键按下 --> 修改模式 : 原先选择了一个图形,且这次在这个图形上 state 修改模式{ 移动状态 --> 鼠标移动 更改大小状态 --> 鼠标移动 鼠标移动 --> 鼠标弹起 } 鼠标左键按下 --> 选择模式 : 原先没有选择,现在选择一个 state 选择模式{ 选择图形后鼠标弹起 --> [*] } 鼠标弹起 --> [*] 鼠标弹起 : 这个要保存命令记录 state 放大缩小模式{ 放大2倍 --> [*] } 鼠标左键按下 --> 放大缩小模式 @enduml