(十八)灰色图的缩放平移操作实现

1.触发采集仿真相机和仿真探测器的图像数据

绑定命令

image

MainViewModel

因为探测器和照相机是以单例模式注册到IOC中,所有各个模块通过接口拿到的都是同一个实例
image
并且不要忘记把image模块的FPD采集注释掉
image
此时,打开软件图像区域没有展示,点击按钮出现灰色图源

2.增加鼠标操作模式(MouseWorkMode)

  • Core.Enums添加枚举
    image

  • ReactiveObject是reactiveui的属性通知实现,BindableBase是prism框架的

  • 创建一个实体用于存放鼠标编辑模式的切换并且提供一个观察者,鼠标工作模式是被观察者
    image

  • 放到容器实例化

  • 获取鼠标工作模式
    image

3.在控件中实时获取鼠标移动位置

前台页面模仿CAD十字线

image

鼠标移动事件

prism框架的InvokeCommandAction可以把鼠标的事件数据传递过去
image
获取鼠标的位置
image

如何拿到前端控件

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

4.初始化图像显示时的缩放和平移状态

补充知识点

RenderTransform类的成员:

1.TranslateTransform   平移效果
2.RotateTransform     旋转效果
3.ScaleTransform    缩放效果
4.SkewTransform    扭转效果
5.TransformGroup    组合效果
6.MatrixTransform    是其他几个变形类的基类,矩阵方式实现效果

RenderTransform是继承Transform类型

TransformGroup

表示由其他 Transform 对象组成的复合 Transform。
image

前台鼠标事件

通过鼠标点击,滚轮移动来实现平移和缩放
image

命令方法的实现

image

把2种变化都放到这个组里
image
拿到整个布局的尺寸,然后对图片进行比例缩放,按长或宽的最小比例
image
然后平移到中间
image
注意:需要把MainWindowViewModel中对主区域的属性设置改改,不能有长宽限制
image

5.模块间以接口通讯及反应式编程讲解(观察者模式)

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

创建接口

在share模块创建鼠标工作模式的提供者
image
修改main模块的模块配置类,让mainModel以接口方式注入IOC
image

图像模块的vm

image
2种方式拿到鼠标的工作模式
image
因为mainmodel的观察者是带泛型的
image

6.观察Combobox的值变化进行图像快捷缩放

页面绑定选中值

image

做一个接口

image

MainModel实现

image

观察事件

image
当选中值切换时
image
枚举可以直接转int,比例获取
image

posted @ 2023-12-27 13:48  huihui不会写代码  阅读(48)  评论(0)    收藏  举报