2012-03-20 3 views
0

У меня есть этот код, чтобы цвет с просто линией:IOS: цвет с рисунком изображения

- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event { 
mouseSwiped = YES; 

UITouch *touch = [touches anyObject]; 
CGPoint currentPoint = [touch locationInView:drawImage]; 

UIGraphicsBeginImageContext(drawImage.frame.size); 
[drawImage.image drawInRect:CGRectMake(0, 0, drawImage.frame.size.width, drawImage.frame.size.height)]; 
CGContextSetLineCap(UIGraphicsGetCurrentContext(), kCGLineCapRound); 
CGContextSetLineWidth(UIGraphicsGetCurrentContext(), 15.0); 


//eraser 
/* 
if (eraser){ 
    CGContextSetRGBStrokeColor(UIGraphicsGetCurrentContext(), 0, 0, 0, 0); 
    CGContextSetBlendMode(UIGraphicsGetCurrentContext(), kCGBlendModeCopy); 
}*/ 

CGContextSetRGBStrokeColor(UIGraphicsGetCurrentContext(), 0, 0, 0, 1.0); //black 

CGContextBeginPath(UIGraphicsGetCurrentContext()); 
CGContextMoveToPoint(UIGraphicsGetCurrentContext(), lastPoint.x, lastPoint.y); 
CGContextAddLineToPoint(UIGraphicsGetCurrentContext(), currentPoint.x, currentPoint.y); 
CGContextStrokePath(UIGraphicsGetCurrentContext()); 
drawImage.image = UIGraphicsGetImageFromCurrentImageContext(); 

UIGraphicsEndImageContext(); 

lastPoint = currentPoint; 
} 

с этим кодом я могу окрасить в представлении или ImageView; Я могу выбрать цвет и размер; но теперь я хочу использовать определенный шаблон для окраски этого представления; конкретный png для использования при вызове touchmoved; можешь мне помочь?

+0

Вы пытались использовать '- (UIColor *) initWithPatternImage: (UIImage *) image'? –

ответ

2

Проверьте https://stackoverflow.com/a/707329/108574, если вы хотите нарисовать рисунок (черепичные изображения).

Однако вы делаете это неправильно в своем коде. Вы не должны привлекать графический контекст во время событий пользовательского интерфейса. Процедуры рисования должны быть внутри - (void)drawRect:(CGRect)rect экземпляра UIView. Когда событие пользовательского интерфейса обновляет графику, вы где-то записываете новое состояние, а затем отправляете сообщение - (void)setNeedsDisplay экземпляру UIView для перерисовки.

+0

Я не хочу рисовать изображение плитки, но я хочу нарисовать изображение пальцем; мой код рисует линию; вместо этого я хочу нарисовать изображение (например, png) – CrazyDev

+0

Извините, я неправильно понял. Вы можете использовать '' CGContextDrawTiledImage'' или '' UIImage: drawInRect'' для рисования изображений в определенных местах. Но мое предыдущее предложение все еще стоит. Вам лучше записывать точки, которые вы хотите рисовать во время события пользовательского интерфейса (использовать NSArray для хранения точек), затем перебирать точки и рисовать изображения в '' drawRect'' –

+0

нет, извините, это не то, что мне нужно – CrazyDev

1

colorWithPatternImage Попробуйте:

Создает и возвращает объект цвета, используя указанное изображение.

+ (UIColor *)colorWithPatternImage:(UIImage *)image 

(reference)

Смежные вопросы