模仿VILLOID照片模版
VILLOID APP中有一些如下图所示的图片模板
一个长为a,宽为b(a,b为单位长度u的整数倍)的大矩形
使用边长为u的整数倍的小矩形来填充满这个大矩形,或者说,把这个大矩形分割成n个边长为u的整数倍的小矩形(称为分割更为合适)
列举出所有的情况
声明一个结构体 ItemLayout表示小矩形的位置和大小 以大矩形左上角为原点(0,0),以1的整数倍表示宽和高
struct ItemLayout {
int x,y;
int w,h;
}
所有的情况会是这样的数据结构 二维数组:
{ {ItemLayout,…,ItemLayout}, … , {ItemLayout,…,ItemLayout}, }
我最初的设想是通过递归方法,传入行数和列数,自动计算出所有的分割方式,但是思路一直没有理清,在网上查了一些东西,比如这篇:http://download.csdn.net/detail/whuangweimin1/3370405 不过看起来比较吃力。
现在我也还没有写出来我所设想的这个递归方法,目前用的是简单直接的方法:手动列举(有点low,不过管用而且比较快,但是对于行列数超过3的就不适用了)
@{
@"rowNumber":@(2),
@"arrangeNumber":@(2),
@"itemCoordinaties":@[@{@"x":@(0),@"y":@(0),@"w":@(1),@"h":@(2)},
@{@"x":@(1),@"y":@(0),@"w":@(1),@"h":@(1)},
@{@"x":@(1),@"y":@(1),@"w":@(1),@"h":@(1)},
]
}
这是2行2列,的左边1*2的矩形,右边是两个1*1的矩形的分割方式,效果如下:
我以同样的格式手写了6、7种分割方式,如下图
模版展示 图片拖动