滚动条原理分析(在使用纯C + API画列表及列表的滚动条时遇到的问题)

来源:互联网 发布:jquery遍历json集合 编辑:程序博客网 时间:2024/05/19 19:40

滚动条原理分析:

如上图:

列表可以区高度为 200, 子项为 10 个, 每个高度 20, 滚动条高度为 200, 假定滚动条上下按钮高度各为10, 则

滑动块大小为180,

如果数据总长是 400, 就有 200 的高度, 10 个\子项不可见, 则有如下形式:

// 1 ---------------------------------------------------------------------------------

滚动条滑动块的高度 = (滚动条高度 - 滚动条上下按钮高度) / (数据总高度 /  滚动条高度)

                   = (200 – 20) / (400 / 200)

滚动条滑动块的高度 =90;

// 2 -----------------------------------------------------------------------------------

滑动块可以移动的范围 = (滚动条高度 - 滚动条上下按钮高度)  - 滑动块的高度

                                   = (200 – 20) – 90

滑动块可以移动的范围 =90

/ 3 ----------------------------------------------------------------------------------

不可见数据高度 = (数据总高度 - 滚动条高度(或列表高度))

不可见数据高度 = 400 –200  == 200

// 4 ----------------------------------------------------------------------------------

要移动的次数 =不可见数据高度/ 子项高度

                      = 200 / 20

要移动的次数 =10 

// 5 ----------------------------------------------------------------------------------

那么 列表子项滚动一次, 滑动块要移动的距离为:

滑动块1次移动的距离 =滑动块可以移动的范围 / (要移动的次数 *  X)

1        =  90 / (10X)

X  = 9

反过来, 滑动块移动1次, 1 的距离, 子项要滚动 的次数是 1X = 9 / 9

------------------------------------------------------------------------------------------------

示例: 列表可以区高度为 200, 子项为 10 个, 每个高度 20, 滚动条高度为 200,

假定滚动条上下按钮高度各为10,则滑动块大小为180,

如果数据总长是 380, 就有 180 的高度, 10 个\子项不可见, 则有如下形式:

// 公式1: 

滚动条滑动块的高度 = (200 – 20) / (380 / 200)= 180 / 1.9 = 94.7   约为 95

// 公式2: 

滑动块可以移动的范围 = (200 – 20) – 95  =  180 –95 = 85

// 公式3:

不可见数据高度 = 380 – 200  =  180

// 公式4:

要移动的次数 = 180 / 20  =  9

// 公式5:

列表子项滚动1次, 滑动块1次移动的距离 =  85 / (9X) = 9.4  约为 9

 

// 

 更多可以直接去看我的共享代码    无句柄画列表-基本功能已实现.rar

 

 

 

 

        每一个 C/C++UI 代码画家都要经过的事….

0 0
原创粉丝点击