当前位置:  开发笔记 > 编程语言 > 正文

计算滚动条位置

如何解决《计算滚动条位置》经验,为你挑选了1个好方法。

我正在尝试为我的G15小程序绘制一个垂直滚动条,但是我很难正确定位它(如果你没有为G15液晶屏做任何事情,可以把它想象成在160x43像素图像上绘图).

这是我目前的定位代码:

perc = (float)Math.Round( range / Items.Count+1 );

y = ( perc * SelectedID+1 );

滚动条的上边缘距离顶部5px,底部边缘为32px.在这种情况下,Y将是滚动条的上端,我使用的是2个像素的长度; 我确实尝试过一个可变长度的条形图,它和上面的代码一样.SelectionID基于0.

我需要的只是计算出位置的数学,不需要用于绘制它的代码.

谢谢.



1> Welbog..:

所以你只需要简单的线性插值,对吧?

因为你有一个c范围内的值,a..b你需要在该范围内的结果值,x..y基于其在a和之间的线性位置b

这种情况的等式是(假设有问题的数字是浮点数或双数):

// c is between a and b
pos = (c-a)/(b-a) // pos is between 0 and 1
result = pos * (y-x) + x // result is between x and y

现在,如果所有内容都是0索引,则可以省略ax获取

pos = c/b
result = pos * y

如果您使用的任何数字都是整数类型,则需要在分割之前将它们转换为双精度数或浮点数(或任何实数类型).

如果你不能将任何东西投射到双打,你可以将所有方程组合在一起,但是:

result = (c * y) / b

这将保证cy乘以整数除法发生之前一起,这将减少与整数除法相关的错误.

推荐阅读
Chloemw
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有