设计
本章节将介绍如何分析需求,设计各个功能。
需求分析
体验过程序后我们可以知道这些细节:
- 界面切换:直接打开程序,显示的是介绍界面。将图片文件的打开方式设置为该程序,显示的是图片查看界面。
- 自适应比例:打开图片后,缩放的尺寸适应窗口内可视区域。
- 进度条:打开尺寸很大的图片时,会有进度条显示。
- 上下切换:如果有下一张图片,移动鼠标指针到右侧区域时会显示“下一张”按钮,点击可切换到下一张图片。“上一张”按钮也类似。
- 缩放比例显示:界面底栏上有显示当前缩放比例,缩放时会更新。
- 鼠标滚轮缩放:滚动鼠标滚轮可以缩放图片,鼠标指针在缩放前后仍指向图像中的同一处。
- 移动可视区域:放大图片后按住鼠标左键可拖动浏览区域。
- 按键控制缩放:按下 + 和 - 可以缩放图片
- 快捷缩放按钮:点击“缩放以适应”按钮后,图片尺寸会缩放到适应窗口尺寸,点击
1:1
按钮后图片按照原始比例显示。 - 全屏:点击全屏按钮后界面占满全屏。
功能设计
上面只分析出了界面交互上的一些需求,而在代码实现上,核心功能逻辑与界面逻辑应该分开,这有助于后续对界面进行更新、调整,甚至迁移至其它界面开发库。
按照这个思路,图片缩放相关逻辑可划分成一个功能模块,命名为控制器(Controller)。图片的上一张/下一张切换功能依赖该图片所在目录内的 其它图片,需要有一个线程在后台遍历文件列表,那么,可以将相关代码划分为另一个模块,命名为收集器(Collector)。
控制器
控制器提供缩放比例的控制能力,包括:放大、缩小、原始比例、自适应比例。除此之外还应记录可视区域的左上角坐标和中心点坐标,因为在放大图片后,需要能够移动可视区域,且应以一个位置为中心来放大和缩小。
收集器
收集器提供图片文件列表和上下切换能力。当打开图片后它会开始工作,先遍历图片文件所处目录内的所有文件,将后缀名是图片后缀名的文件路径添加到列表中,然后确定当前打开的图片在列表中位置,最后通知图片查看界面启用图片切换功能。
小结
经过上述分析和设计,我们对各个功能的需求和实现方案有了大致的了解,接下来我们将进一步地开发每一个功能。