我正在构建一个Custom Scroll Bar(如上图所示)我能够将滚动条值设置为允许范围内的任何数字(Min和Max之间),但是当涉及到鼠标滚动时,我遇到了数学问题。
我希望鼠标保持在用户在拇指栏中单击的位置,然后向上或向下拖动拇指,以便滚动条的中间位置反映该值。
我有以下代码来休息拇指的中间位置:
Domain
此代码可以正常工作,APART从Thumb总是跳跃的事实,以便拇指的中间跟踪鼠标。
如何在不跳跃的情况下让拇指跟踪鼠标位置?
答案 0 :(得分:0)
我失踪的部分是用户按下鼠标按钮开始拖动拇指的事实。此时,可以在拖动拇指的同时计算并使用拇指中间位置的偏移。在用户释放鼠标之前,此偏移量将保持不变。在整个事件序列中保持不变的事实,它可以在鼠标移动期间使用。
伪码:
MouseDownEvent(MouseEventArgs e) {
m_mouseOffset = e.Y - Thumb.Top + (ThumbLength / 2);
}
MouseMoveEvent(MouseEventArgs e) {
int iPos = e.Y;
iPos -= m_mouseOffset;
m_iMidPoint= iPos;
}