鼠标移动调窗算法

鼠标移动调窗算法
y方向:C(窗位)
x方向:W(窗宽)
            pImg->getMinMaxValues(dMin, dMax);

            m_dae.m_nCenterMin = dMin;
            m_dae.m_nCenterMax = dMax;
               
            m_dae.m_nWidthMin = 1;
            m_dae.m_nWidthMax = 2 * 256 * (dMax - dMin);
                   
            //------------------------------------------------------

            int yShift = point.y - m_ptOrg.y;
            if (yShift != 0)
            {
                m_attr.nCenter += yShift;
                m_attr.nCenter = min(m_dae.nCenterMax, max(m_dae.nCenterMin, m_attr.nCenter));
            }
           
            int xShift = -(point.x - m_ptOrg.x);
            if (xShift != 0)
            {
                int m = m_dae.nCenterMax - m_dae.nCenterMin;
               
                if ((m_attr.nWidth >= 1 && m_attr.nWidth < m)
                    || (m_attr.nWidth == m && xShift < 0))
                    m_attr.nWidth += xShift;
                else if ((m_attr.nWidth > m && m_attr.nWidth <= m_dae.nWidthMax)
                    || (m_attr.nWidth == m && xShift > 0))
                {                   
                    int i = 512 - 1.0 * m * 512 / m_attr.nWidth;
                    i += xShift;
                    i = min(511, max(0, i));
                   
                    m_attr.nWidth = 1.0 * m * 512 / (512 - i);               
                }
                m_attr.nWidth = min(m_dae.nWidthMax, max(m_dae.nWidthMin, m_attr.nWidth));
            }

            m_ptOrg = point;

转载于:https://www.cnblogs.com/vc60er/archive/2010/09/01/3998647.html

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值