君方智能设计平台-夹点交互编辑架设计与实现

1.背景介绍

在图形平台开发中,实现强大的图形编辑功能对于用户体验至关重要。夹点(Grips)编辑是其中的一个关键部分,它不仅简化了用户与图形对象的交互,还提供了多种功能,从简单的移动和缩放到复杂的旋转和对象操作。

夹点是图形对象上的可视化控制点或手柄,它们用于交互式地编辑和调整对象的位置、大小和形状。夹点通常以小图标、几何图形或其他可识别的形式显示在对象的关键部位,如端点、中点、角点、中心点等。用户可以通过选择夹点并拖动、旋转或执行其他编辑操作来修改对象,从而实现精确的图形调整。

2.设计要求
  • 提供自定义夹点显示。

      提供扩展接口,允许应用层和第三方用户自定义对象的图形显示。

  • 提供自定义夹点编辑行为。

      提供扩展接口,允许应用层和第三方用户自定夹点的编辑行为,扩展用户的业务逻辑。

  • 提供对象自定义夹点创建。
3.实现原理
3.1 识别夹点

夹点编辑的第一步是识别图形对象上哪些点或边缘可以成为夹点。这通常需要考虑图形对象的类型和几何结构。例如,对于一个矩形,夹点通常会出现在每个角落和每条边的中点。对于一条线段,夹点可能只出现在起点和终点。这一步需要进行几何分析,并生成夹点的坐标信息。

3.2 用户交互

一旦夹点被识别,用户可以通过鼠标或触摸屏等输入设备与夹点进行交互。用户可以选择一个夹点,然后通过拖动、旋转、缩放或其他手势来编辑对象。这些交互动作会产生一系列的用户输入事件,例如鼠标移动、鼠标点击和鼠标释放事件。

3.3 坐标变换

当用户与夹点交互时,需要将用户输入的坐标从屏幕坐标系转换为对象坐标系。这通常涉及到坐标变换和逆变换。坐标变换将屏幕坐标转换为对象坐标,而逆变换则将对象坐标转换回屏幕坐标,以便实现交互的平滑体验。

3.4 对象更新

一旦用户完成了编辑操作,需要根据夹点的变化来更新对象的几何数据。这包括对象的位置、大小、形状等。对于不同的图形对象,更新的方式会有所不同。例如,对于一个矩形,可以根据两个对角夹点的位置来确定矩形的新位置和大小。这一步需要进行数学计算和几何变换。

3.5 实时反馈

为了提供更好的用户体验,通常会实现实时反馈机制,以便用户在编辑过程中可以看到对象的变化效果。这可以通过在屏幕上绘制对象的实时预览或高亮显示夹点来实现。

4.技术方案
4.1 夹点创建类图设计

4.2 夹点编辑类图设计

4.3 夹点交互流程

5.技术实现
5.1  夹点相关类设计
  • IGrip接口设计

      定义夹点创建

  • IGripBehavior接口设计

     扩展夹点的编辑和现实行为

  • IGripManager接口设计

     对创建的夹点的管理,包括创建,删除及更新等。

  • IGripStrategy接口设计

    负责管理对象的夹点策略对象创建那些夹点等。

  • IGripStrategyManager接口设计
5.2  何时创建夹点

对象被选中时,会触发选择更新操作事件,在对象选择跟新操作处理器中,调用GripStrategyManager获取对象的夹点创建策略,夹点创建策略创建对象的夹点。

如果选择集为空,则会调用GripManager来清理夹点。

6.夹点编辑框架使用
6.1 自定义夹点

从IGripBehavior继承实现自己的GripBehavior对象,实现相应的接口:

  • 重载CreateGrahicsElementShape实现夹点自己的显示。
  • 重载Translate实现夹点自己的编辑行为。
  • 重载UpdatePosition更新夹点自己的位置。
  • 重载GetCommandHandlerString夹点双击触发的命令,一般用于门窗等切换朝向变换等。
6.2 自定义对象的夹点创建策略

从IGripStrategy继承实现自己的GripStrategy对象,实现 IGripStategy的接口,然后注册到GripStrategyManager中。例如:

REGISTER_ELEMENT_GRIP_STRATEGY(CategoryId((Int32)EnumArchBuiltInCategory::OST_Columns), ColumnGripStrategy)

君方智能设计平台-ShipMaker软件介绍-CSDN博客

  • 12
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值