自绘滚动条,滚动条模型,滚动条数据结构

本文探讨如何使用GDI自绘滚动条,重点在于滚动条的数据结构和模型,包括ScrollInfo结构体的定义,以及计算thumb大小和位置的公式。通过理解这些,可以实现滚动条的绘制及响应功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

最近作一个东西要自己做一个滚动条,决定用GDI自己绘制一个滚动条,然后加上鼠标键盘响应,做完了总结下滚动条的数据结构/模型,方便以后再用,或者方便有相同需求的同学。

 

本文讲述如何实现一个滚动条所用到的必要的数据结构和模型,方便自己去绘制一个滚动条,不是滚动条的入门或者使用教程。

关键字: 自绘滚动条,滚动条模型,滚动条数据结构,scrollbar data structure

 

<图> <优快云不能传图现在,等能传在传上来>

 

绘制一个滚动条,我们必须绘制如下几个部分(如图):

1.一个向上按钮,一个向下按钮,用于鼠标单击让其滚动;
2.track:thumb所在的轨道,用以拖动滚动的轨道;
3.thumb:可以拖动滚动的部分(或者scroll box)

 

期中track和向上按钮,向下按钮位置大小都很容易确定(也比较固定),这里不讨论如何绘制这个部分。主要讨论如何绘制计算和绘制thumb,我们要确定thumb的大小和位置。

先定义一个结构体供我们设置绘制使用的数据(参考上图):


ScrollInfo {
  int min;
  int max; 
  int page; // 一页包含的unit数。
  int pos;  // 当前thumb位置。
};

 

Scroll Information(简称si)都是以数据模型为单位的,一般用整数表示。(比如,如果数据模型为文本,这个单位就可以是文本的行),这个单位我们统一抽象称为unit。 图中右边的信息单位都是unit(左边的数据信息都是

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值