Я ищу что-то, что отмечено красным, как маркер, но не знаю, можно ли это сделать или нет.Каллиграфия Рисунок IOS Coregraphics
Похоже на маркировку, используя ручку каллиграфии.
Пробуя следующий код, как ответил «Андрей», я получаю следующий вывод с пробелами в процессе рисования.
Brush изображение можно найти здесь используется
внесении дополнительных изменений в коде, я нашел еще я не в состоянии получить ожидаемый результат. Здесь я пытаюсь заполнить путь, который существует между текущей точкой и следующей точкой.
- (void)drawRect:(CGRect)rect
{
// Drawing code
CGFloat w=5.0;
CGFloat h=2.0;
CGContextRef context=UIGraphicsGetCurrentContext();
CGContextSetFillColorWithColor(context, [UIColor redColor].CGColor);
for(int i=0;i<self.positions.count;i++){
CGPoint point=[[self.positions objectAtIndex:i] CGPointValue];
CGFloat x=point.x-(w/2.0);
CGFloat y=point.y-(h/2.0);
CGContextFillRect(context, CGRectMake(x, y, w, h));
if(i+1<self.positions.count){
CGPoint nextPoint=[[self.positions objectAtIndex:(i+1)] CGPointValue];
CGMutablePathRef myPath=CGPathCreateMutable();
CGPathMoveToPoint(myPath, NULL, x, y);
CGFloat x1=nextPoint.x-(w/2.0);
CGFloat y1=nextPoint.y-(h/2.0);
CGPathAddLineToPoint(myPath, NULL, x1, y1);
CGPathAddLineToPoint(myPath, NULL, w, y1);
CGPathAddLineToPoint(myPath, NULL, w, y);
CGPathCloseSubpath(myPath);
CGContextFillPath(context);
}
}
}
Никогда не думал, что было бы так легко нарисовать его. Эй, кстати, когда я закодировал, я обнаружил, что осталось немного пробелов, это не должно происходить, поскольку мы постоянно обновляем его в touchhesMoved: – weber67
@ weber67 'touchhesMoved' пропустит некоторые позиции. Вы должны помнить последнюю позицию и интерполировать позиции между ними. – Sulthan
@ weber67 вы должны использовать какую-то интерполяцию как упомянутый выше Султан. Правильная логика заключается в реализации интерполированного чертежа линий с точками, которые вы получили от касаний. Но это может быть медленным со сложными фигурами. –