void DocEditor::Zoom(bool zoomIn, int iMouseX, int iMouseY)
{
QSize szWin = size();
if (iMouseX < 0)
iMouseX = szWin.width() / 2;
if (iMouseY < 0)
iMouseY = szWin.height() / 2;
m_iOrgX = (iMouseX - m_iX) / m_fScale;
m_iOrgY = (iMouseY - m_iY) / m_fScale;
float scale = 1.0f;
if (zoomIn) {
scale = 2.0f;
}
else {
scale = 0.5f;
}
scale = m_fScale * scale;
float limit = 128.0f;
if (scale > limit)
scale = limit;
if (scale < 1.0f / limit)
scale = 1.0f / limit;
//int orgX = m_iBmpMoveX / m_fScale;
//int orgY = m_iBmpMoveY / m_fScale;
if (m_fScale != scale)
{
m_fScale = scale;
m_iX = iMouseX - m_iOrgX * m_fScale;
m_iY = iMouseY - m_iOrgY * m_fScale;
//m_iBmpMoveX = offsetX * m_fScale;
//m_iBmpMoveY = offsetY * m_fScale;
OnUpdate();
NotifyUpdateThread();
}
}
void DocEditor::wheelEvent(QWheelEvent * event)
{
int iMouseX = event->x();
int iMouseY = event->y();
Zoom(event->delta() > 0, iMouseX, iMouseY);
}
这里是我用wpf实现的鼠标滚轮绽放。
链接:https://download.csdn.net/download/mycn027/11975557
另外本人可代写各类编辑器,付点小费即可,需要可联系我哦。