(十八)灰色图的缩放平移操作实现
1.触发采集仿真相机和仿真探测器的图像数据
绑定命令

MainViewModel
因为探测器和照相机是以单例模式注册到IOC中,所有各个模块通过接口拿到的都是同一个实例

并且不要忘记把image模块的FPD采集注释掉

此时,打开软件图像区域没有展示,点击按钮出现灰色图源
2.增加鼠标操作模式(MouseWorkMode)
-
Core.Enums添加枚举
![image]()
-
ReactiveObject是reactiveui的属性通知实现,BindableBase是prism框架的
-
创建一个实体用于存放鼠标编辑模式的切换并且提供一个观察者,鼠标工作模式是被观察者
![image]()
-
放到容器实例化
-
获取鼠标工作模式
![image]()
3.在控件中实时获取鼠标移动位置
前台页面模仿CAD十字线

鼠标移动事件
prism框架的InvokeCommandAction可以把鼠标的事件数据传递过去

获取鼠标的位置

如何拿到前端控件
通过loaded事件

那个参数不知道是什么类型可以先在前台生成一下事件看类型

4.初始化图像显示时的缩放和平移状态
补充知识点
RenderTransform类的成员:
1.TranslateTransform 平移效果
2.RotateTransform 旋转效果
3.ScaleTransform 缩放效果
4.SkewTransform 扭转效果
5.TransformGroup 组合效果
6.MatrixTransform 是其他几个变形类的基类,矩阵方式实现效果
RenderTransform是继承Transform类型
TransformGroup
表示由其他 Transform 对象组成的复合 Transform。

前台鼠标事件
通过鼠标点击,滚轮移动来实现平移和缩放

命令方法的实现

把2种变化都放到这个组里

拿到整个布局的尺寸,然后对图片进行比例缩放,按长或宽的最小比例

然后平移到中间

注意:需要把MainWindowViewModel中对主区域的属性设置改改,不能有长宽限制

5.模块间以接口通讯及反应式编程讲解(观察者模式)
c#观察者模式
现在,main模块中的MainModel里面有鼠标工作模式和一个观察者,需要观察图片模块的变化,涉及到了模块间通讯,所以我们需要利用到share模块创建接口。(share模块是可以被任意模块直接引用的)

创建接口
在share模块创建鼠标工作模式的提供者

修改main模块的模块配置类,让mainModel以接口方式注入IOC

图像模块的vm

2种方式拿到鼠标的工作模式

因为mainmodel的观察者是带泛型的

6.观察Combobox的值变化进行图像快捷缩放
页面绑定选中值

做一个接口

MainModel实现

观察事件

当选中值切换时

枚举可以直接转int,比例获取






浙公网安备 33010602011771号