15,980
社区成员




假设你的屏幕分辨率是1920X1080
如果你是垂直滚动,那么你一屏幕数据就是1080行
那么有两屏幕的数据屏幕是直接显示的,另外一屏幕数据是用来缓冲数据的
int starty=0;
显示第starty行到第starty+1080行数据
当starty=0时,显示的是第1屏数据 第2第3屏数据不用显示
当starty>0&&starty<1080时候, 第1屏数据和第2屏数据各显示一部分
当starty=1080时,显示的是第2屏幕 第1第3屏幕数据不用显示
依此类推,最多需要同时显示两屏幕数据,
所以有两屏数据是用来显示的,另一屏数据是用来缓冲的
如果考虑水平滚动,那自然就是横3竖3=9屏
也就是正中间显示1屏,上,下,左,右, 左上,左下,右上和右下共有8屏数据缓冲
往那个方向滚超过1屏的数据,就读取磁盘文件数据填充反方向最后的那个缓冲
并把它排到准备滚动的前面