У меня есть набор CGPoint
s, которые представляют форму, которая немного похожа на перевернутую 'T' форму, теперь я хочу преобразовать эти точки в 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
.
Вот форма изображения, у меня есть координаты для каждой точки в форме:
Изображение, размещенное на 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