Я делаю простую программу рисования iPhone в качестве личного побочного проекта.Простое приложение для рисования iPhone с кварцем 2D
Я фиксирую событие прикосновения в подклассе UIView и выставляю фактический материал отдельному CGLayer. После каждого рендеринга я вызываю [self setNeedsLayout] и в методе drawRect: я рисую CGLayer в контекст экрана.
Все это прекрасно работает и подходит для рисования прямоугольников. Тем не менее, я просто хочу простой режим «свободной руки», как и многие другие приложения для iPhone.
Как я думал, что сделать это было создать CGMutablePath, а просто:
CGMutablePathRef path; -(void)touchBegan { path = CGMutablePathCreate(); } -(void)touchMoved { CGPathMoveToPoint(path,NULL,x,y); CGPathAddLineToPoint(path,NULL,x,y); } -(void)drawRect:(CGContextRef)context { CGContextBeginPath(context); CGContextAddPath(context,path); CGContextStrokePath(context); }
Однако после нанесения более чем на 1 секунду, производительность падает с треском.
Я бы просто рисовал каждую строку в экранном CGLayer, если бы не переменная непрозрачность! Прозрачность менее 100% заставляет точки оставаться на экране, соединяющем линии. Я посмотрел на CGContextSetBlendingMode(), но, увы, я не могу найти ответ.
Может ли кто-нибудь указать мне в правильном направлении? Другие приложения для iPhone могут сделать это с очень хорошей эффективностью.