Я пытаюсь реализовать рисованный рисунок поверх изображения, но я не хочу сохранять результат как изображение. Я адаптировал код from this article, но я ничего не вижу (хотя я знаю, что метод drawRect вызывается). Я проверил, что я выполняю итерацию через действительные CGPoints в цикле for. Итак, все кажется в очереди, но физически ничего не делается.Рисунок Freehand в iOS - нужно использовать точки
Я что-то упустил?
Кроме того, просто для того, чтобы отметить, я отделил раздел рисования фигуры, но это работает (рисунок овалов, прямоугольников и линий).
Вот код:
- (void)drawRect:(CGRect)rect
{
if(self.shapeType == DrawShapeTypeCustom)
{
if(!self.myDrawings)
{
self.myDrawings = [[NSMutableArray alloc] initWithCapacity:0];
}
CGContextRef ctx = UIGraphicsGetCurrentContext();
CGFloat red = 0.0, green = 0.0, blue = 0.0, alpha =0.0;
[[UIColor redColor] getRed:&red green:&green blue:&blue alpha:&alpha];
CGContextSetRGBFillColor(ctx , red , green , blue , 0.0);
CGContextSetRGBStrokeColor(ctx , red , green , blue , 0.9);
CGContextSetLineWidth(ctx , (CGFloat) 5);
if([self.myDrawings count] > 0)
{
CGContextSetLineWidth(ctx , 5);
for(int i = 0 ; i < [self.myDrawings count] ; i++)
{
NSArray * array = [self.myDrawings objectAtIndex:i];
if([array count] > 2)
{
CGFloat x = [[array objectAtIndex:0] floatValue];
CGFloat y = [[array objectAtIndex:1] floatValue];
CGContextBeginPath(ctx);
CGContextMoveToPoint(ctx , x, y);
for(int j = 2 ; j < [array count] ; j+= 2)
{
x = [[array objectAtIndex:0] floatValue];
y = [[array objectAtIndex:1] floatValue];
CGContextAddLineToPoint(ctx , x , y);
}
}
CGContextStrokePath(ctx);
}
}
}
else
{
// Draw shapes...
}
}
Вы пытались создать 'CGMutablePathRef', а затем добавить это в контекст и погладить путь. Я никогда не делал пути CGContext, которые не были закрыты. Или вы можете настроить массив точек и использовать 'CGContextStrokeLineSegments (CGContextRef c, const CGPoint * points, size_t count)' – Putz1103
Нельзя рисовать под изображением. Я использую общий код для создания и добавления subview для этого пользовательского рисования и рисования фигуры. Формы появляются просто отлично. Я не думал об использовании 'CGContextClosePath', но на самом деле я не хочу закрывать путь. Я только хочу показать путь, который пользователь рисует. Тем не менее, я все равно попробую и посмотрю, покажет ли рисунок. – thephatp
Я думал об использовании сегментов линии, но думал, что это может выглядеть зубчатым. Тем не менее, сейчас что-то лучше, чем ничего, поэтому я отдам его и посмотрю, поможет ли это. Если так, и это выглядит прилично, я просто придерживаюсь этого. Я дам Вам знать. – thephatp