gpt4 book ai didi

c# - 计算滚动条位置

转载 作者:行者123 更新时间:2023-11-30 20:13:41 24 4
gpt4 key购买 nike

我正在尝试为我的 G15 小程序绘制一个垂直滚动条,但很难正确定位它(如果您还没有为 G15 LCD 屏幕做任何事情,请将其视为在 160x43 像素图像上绘制)。

这是我当前的定位代码:

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

y = ( perc * SelectedID+1 );

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

我只需要计算出位置的数学,不需要绘制它的代码。

谢谢。

最佳答案

所以您只是在进行简单的线性插值,对吧?

因为您有一个 a..b 范围内的值 c 并且您需要 x..y 范围内的结果值> 基于它在 ab 之间的线性位置?

这种情况的等式是(假设有问题的数字是 float 或 double ):

// 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

如果您使用的任何数字是整数类型,则需要在除法之前将它们转换为 double 或 float (或任何实数类型)。

不过,如果您不能将任何东西转换为 double ,则可以将所有方程式组合在一起:

result = (c * y) / b

这将保证 cy 在整数除法发生之前相乘,这将减少与整数除法相关的错误。

关于c# - 计算滚动条位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1406546/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com