• 二维图形编辑中点选取策略研究


    作者:朱金灿
    来源:http://blog.csdn.net/clever101/


          在二维图形编辑中,鼠标操作估计是最常用的操作。在一般的图形操作中,一般的常用操作包括鼠标点选取。这里的点选取是指移动鼠标点到指定的图形对象上,指定的图形对象进行高亮显示(下图中的红色显示),意在提示用户该图形对象出于选中的范围,类似于下图:


    point snap


       
          下面谈谈怎样的是合理的点选取策略?首先涉及到鼠标点和图形对象之间距离,需要确定一个阈值,只有在鼠标点和某一图形对象的距离小于等于这一阈值时,这一图形对象才出于选中状态。其次在鼠标点离开某一图形对象的选中区域(即阈值范围内),也需要重设该对象为不选中状态。我们假设所有的图形对象都放在一个数组里。现在我们用伪代码模拟这一鼠标移动的选中事件:


    int m_nSelIndex; // 上一次的选中的图形对象的序号


    void MouseMoveFunction() // 鼠标移动消息处理函数
    {
    计算当前鼠标点到所有图形对象的距离,取得距离最小的那一个图形对象的序号。
    假如上面求出的距离小于阈值
    {
    如果刚才的获取的图形对象序号上一次选中的图形对象序号(即等于m_nSelIndex)
       {
              退出;
       }
    否则
       {
         将上一次选中的图形对象区域设为不选中状态;
         对该次选中的图形对象区域进行高亮显示;
         m_nSelIndex赋值为该次选中图形对象的序号。
        }
    }
    否则
        {
         将上一次选中的图形对象区域设为不选中状态;
         m_nSelIndex赋值为-1,意为当前没有选中的图形对象。
        }
    }


         其次这一过程中涉及的计算量比较多的应该是计算当前鼠标点到所有图形对象的距离,取得距离最小的那一个图形对象的序号。一个优化策略是在这一计算过程中先将明显大于阈值的图形对象先剔除掉,比如在计算两点距离时两点的x方向的差或y方向的差大于阈值,就可以判断出这两点的距离一定大于阈值,从而避免再进行平方和开方的运算。







  • 相关阅读:
    python学习 day6 (3月7日)
    day05作业---字典
    day04 列表
    python学习 day5 (3月6日)
    python学习 day4 (3月5日)---列表
    Head First JavaScript 第九章:9 异步编码——处理事件
    Head First JavaScript 第八章:8 编写一个应用程序
    Head First JavaScript 第七章:7 类型、相等、转换等系统地讨论类型
    《深入理解C指针》第五章 指针和字符串
    Architecture of a Database System论文——第四章:关系查询处理器
  • 原文地址:https://www.cnblogs.com/lanzhi/p/6470974.html
Copyright © 2020-2023  润新知