昨天第三天把绘画功能的大体框架制作出来,今天则是抽象出各种接口模块,比如常规绘画属性接口,大小 颜色 锐度 还有笔刷接口,笔.刷模块,矢量笔.刷,矢量笔刷的各种模块选择,圆形 方形 多边形 位图笔.刷...还有彩色纹理笔的实现逻辑。
彩色纹理笔的实现方案是bitmap纹理遮罩,通过已经有的绘画功能画出存在透明的轮廓位图,然后通过遮罩纹理大图,最终产生纹理笔的效果。
这里的纹理大图,使用的是重复填充纹理,这个功能非常棒,我曾经测试过,上万分辨率的重复纹理和一张只有几百x几百大小的纹理性能消耗是相同的。
关于撤销重做历史记录的功能已经在上个博客里面写过了,这里不进行展开。
下面就是我要讲的整体架构设计了,
容器1:存放笔刷画的内容列表
1.滤镜特效容器应用
2.黑白灰透明度路径
3.存储当前一点move移动序列
位图1:塌缩容器1绘画内容
以便于进行位图特效操作,比如后面的mask遮罩
位图2:指定遮罩位图数据
如果有开启纹理笔刷,那么就mask指定位图1让其产生遮罩效果否则隐藏不应用。
位图3:这里存放的是全部绘画结果叠加
画的任何东西都会显示在这里,也就是叠加
容器2:存放位图1和位图2和位图3内容
这里就包含了笔刷和纹理笔刷的所有内容功能叠加。
所以,最终结果就是,顶层目录下放两个容器,一个放绘画内容一个放塌缩位图和最终结果,最终就做完全部的绘画功能了。