我有一组表示一个有点像倒置的“T”形状的形状的
CGPoint
s,现在我想将这些点转换为适合该形状的CGRect
,所以要创建一个包含整个形状的CGRect
,我只需循环并计算左上角的最低x
和y
以及右下角的最高x
和y
,这非常好,但留下了图像外的白色区域,如何找出没有白色区域的最大矩形,使最终形状更像“|”形状? 我到目前为止的代码:CGPoint topLeft = CGPointZero;
CGPoint bottomRight = CGPointZero;
for( NSValue *value in points ) {
CGPoint point = [value CGPointValue];
if( topLeft.x == 0 || topLeft.x > point.x ) shapeRect.x = point.x;
if( topLeft.y == 0 || topLeft.y > point.y ) shapeRect.y = point.y;
if( bottomRight.x < point.x ) bottomRight.x = point.x;
if( bottomRight.y < point.y ) bottomRight.y = point.y;
}
CGRect shapeRect = CGRectMake(topLeft.x, topLeft.y, bottomRight.x - topLeft.x, bottomRight.y - topLeft.y);
编辑:我画了一些图片来展示我的目标。灰色区域显示CGRect
。
这是图像的形状,我有每个点的坐标:
Image Hosted by ImageShack.us http://img684.imageshack.us/img684/121/crop1.png
这是我上面的代码产生的结果:
Image Hosted by ImageShack.us http://img26.imageshack.us/img26/2521/crop2j.png
这是我想要实现的效果:
Image Hosted by ImageShack.us http://img689.imageshack.us/img689/5499/crop3.png