鼠标移动调窗算法
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;