Как сделать индивидуальный рисунок на изображении в объекте-c

Прежде всего хочу сказать, что я новичок в objective-c.

пока знаю, что у меня есть приложение, которое просто рисует одно изображение (это изображение .png, имеющее 3 цвета: красный, зеленый, синий). приложение рисует линии по всему изображению.

я хочу рисовать линии только одним цветом (например, красным), даже если касание (мышь) поднимает другие цвета. (... как я читал в Интернете, это должно быть сделано с использованием алгоритма заливки)

не могли бы вы дать мне несколько идей о том, как это сделать?

код, который я использую сейчас:

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

UITouch *touch = [touches anyObject];
currentPoint = [touch locationInView:self.view];

UIGraphicsBeginImageContext(CGSizeMake(320, 568));
[drawImage.image drawInRect:CGRectMake(0, 0, 320, 568)];
CGContextSetLineCap(UIGraphicsGetCurrentContext(), kCGLineCapRound);
CGContextSetLineWidth(UIGraphicsGetCurrentContext(), 5.0);
CGContextSetRGBStrokeColor(UIGraphicsGetCurrentContext(), 0, 2, 0, 2);
CGContextBeginPath(UIGraphicsGetCurrentContext());
CGContextMoveToPoint(UIGraphicsGetCurrentContext(), lastPoint.x, lastPoint.y);
CGContextAddLineToPoint(UIGraphicsGetCurrentContext(), currentPoint.x, currentPoint.y);
CGContextStrokePath(UIGraphicsGetCurrentContext());


[drawImage setFrame:CGRectMake(0, 0, 320, 568)];
drawImage.image = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
lastPoint = currentPoint;

[self.view addSubview:drawImage];
}

спасибо заранее.


person Florjon    schedule 08.11.2012    source источник
comment
Этот пост дает некоторые подсказки о том, как открыть изображение и получить доступ к пикселям.   -  person Hot Licks    schedule 08.11.2012
comment
CGContextRef context = UIGraphicsGetCurrentContext(); сделает это намного более читаемым   -  person trapper    schedule 08.11.2012


Ответы (1)


Вы можете создать собственный класс, производный от UIView, и переопределить сообщение drawRect:. Затем поместите код отрисовки в drawRect:. Добавьте этот настраиваемый класс в качестве подвида над вашим UIImageView.

#import <QuartzCore/QuartzCore.h>
@interface YourView : UIView {
    ...
}


in .m file
- (void)drawRect:(CGRect)rect{
    CGContextRef ctx = UIGraphicsGetCurrentContext();
    //your drawings
}
person sunkehappy    schedule 08.11.2012