Как нарисовать изменяемый размер многоугольника в iPhone? - PullRequest
2 голосов
/ 23 ноября 2011

Я нарисовал многоугольник, используя Core Graphics. Но я не могу изменить размер многоугольника. Я использовал UIBezierPath , чтобы нарисовать полигон. Это мой код

CGPoint gestureStartPoint,currentPosition;
- (id)initWithFrame:(CGRect)frame {
    self = [super initWithFrame:frame];
    if (self) {
        currentPath = [[UIBezierPath alloc]init];
        currentPath.lineWidth=1;
        xx1 = 30;
        yy1 = 30;
        xx = 30;
        yy = 30;  
        CGPoint gestureStartPoint,currentPosition;  
    }
    return self;
}

- (void)drawRect:(CGRect)rect {
    if(drawColor==nil){
        [[UIColor redColor]setStroke];
        [currentPath stroke];
    }
    else {
        [drawColor setStroke];
        [currentPath stroke];
    }
}

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
        UITouch *touch = [touches anyObject];
        gestureStartPoint = [touch locationInView:self];
        currentPosition.x = xx;
        currentPosition.y = yy;
        xx = gestureStartPoint.x;
        yy = gestureStartPoint.y;
        [currentPath moveToPoint:(currentPosition)];
        [currentPath addLineToPoint:(gestureStartPoint)];
        [self setNeedsDisplay];
}

Это ссылка на образец изменяемый размер полигона . Как нарисовать многоугольник с изменяемым размером, как это? Я не знаю, с чего начать создавать изменяемый размер многоугольника.

1 Ответ

1 голос
/ 25 ноября 2011

Это сложнее, чем просто вызывать магию CoreGraphics.

Чтобы просто продублировать логику сайта, на который вы ссылаетесь, я бы начал с разбивки проблемы:

Распознаются два типа жестов: касание и нажатие-удержание-перетаскивание.

Нажмите, чтобы добавить x, y (точку) к списку точек, которые вы сохраняете и перерисовываете.

Нажатие-удержание-перетаскивание должно использовать местоположение x, y касания пользователя, чтобы определить ближайшую вершину - и вам, вероятно, следует также выполнить некоторую проверку максимального расстояния. Как только вы определили, какую вершину «перетаскивает» пользователь, вы можете манипулировать этой точкой в ​​вашем списке и перерисовывать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...