不是说 Open Source 就不能那么开发,而是实在是客观限制。一方面平时可用的时间非常少,一方面工程总量大得不着边际。从培养兴趣和维持成就感的角度出发,我决定改变开发模式,一点一点做大。
这样一来,UI 组件就也得同步开发,而不光是内核。首先是显示图像文档的这个基本组件,因为其他一切操作都基于它。这一阶段,我希望实现的功能是:
- 显示给定的图像文件
- 可以更改显示百分比
- 可以缩放显示窗口
- 可以显示标尺
- 支持各种不同的长度单位
显示图像不复杂,因为我把复杂性留给了其他的组件,身为画布显示组件(Surface),只需要直接显示传入的图片(CanvasImage)和叠加的信息合成图片(OverlayImage)即可。唯一麻烦的,是如何处理好画布区域和边界外区域(那些灰色的部分),以及滚动条的同步。
我的做法是实时绘所有的东西,双缓冲。实时计算控件尺寸和画布尺寸的大小,判断是否需要滚动条,并计算画布在屏幕上的相对位置,设置滚动条位置等等。目前看来效果还好。