模仿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种分割方式,如下图

模版展示
图片拖动

demo

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

友情链接更多精彩内容