Как заполнить фигуры цветом - PullRequest
1 голос
/ 04 февраля 2012

Я новичок в разработке Objective-C и iOS.У меня есть вид с некоторыми фигурами, нарисованными основным рисунком.Теперь я хочу заполнить эти фигуры цветом и не знаю пути или контекста фигуры.Имеет ли Objective-C какую-либо функцию, такую ​​как заливка или вставка пикселя, так что, имея только цвет обводки, я могу заполнить любую форму внутри моего вида.

-(void)drawRect:(CGRect)rect
{
    CGContextRef context = UIGraphicsGetCurrentContext();
    CGContextSetLineWidth(context, 4.0);       
    CGColorSpaceRef colorspace = CGColorSpaceCreateDeviceRGB();       
    CGFloat components[] = {1.0, 0.0, 0.0, 1.0};      
    CGColorRef color = CGColorCreate(colorspace, components);     
    CGContextSetStrokeColorWithColor(context, color);

    CGContextMoveToPoint(context, 50, 0);
    CGContextAddLineToPoint(context, 0,320);

    CGContextStrokePath(context);
    CGColorSpaceRelease(colorspace);
    CGColorRelease(color);


    CGContextSetLineWidth(context, 2.0);

    CGContextSetStrokeColorWithColor(context, [UIColor blueColor].CGColor);
    CGContextSetRGBFillColor(context, 0, 255, 0, 1.0);

    CGContextMoveToPoint(context, 100, 100);
    CGContextAddLineToPoint(context, 150, 150);
    CGContextAddLineToPoint(context, 100, 200);
    CGContextAddLineToPoint(context, 50, 150);
    CGContextAddLineToPoint(context, 100, 100);

    CGContextStrokePath(context);

    CGContextSetLineWidth(context, 2.0);

    CGContextSetStrokeColorWithColor(context, [UIColor blueColor].CGColor);

    CGRect rectangle = CGRectMake(60,170,200,80);

    CGContextAddEllipseInRect(context, rectangle);

    CGContextStrokePath(context);
}

Это создаст круг и квадрат скакой-то общий регион.Я хочу, чтобы конкретный регион заливался цветом, когда пользователь касается этого региона.

Ответы [ 4 ]

2 голосов
/ 18 июля 2013

Итак, вы ищете заливку в Objective C.

Это моя реализация алгоритма заполнения линии сканирования.

Github: UIImageScanlineFloodfill

Если вы хотите изучить основы заливки:

Учебное пособие по компьютерной графике Лоде Наводнение

Надеюсь, это поможет вам.

0 голосов
/ 04 февраля 2012

Попробуйте эту команду: -

  CGContextSetStrokeColorWithColor(context, [UIColor blueColor].CGColor);
0 голосов
/ 04 февраля 2012

Core Graphics тесно связана с UIView и его drawRect: методом и имеет интерфейс C.Как вы указали, вы всегда рисуете в текущем графическом контексте.Я могу думать о 2 подходах: (1) Когда пользователь нажимает myView, задайте свойство, например myView.pointTapped, и в drawRect: найдите форму для заполнения, установите цвет заливки и заполните закрытый путь, используя * 1006.* GGGeometry методы.

Существует альтернатива объективной C: (2) Взгляните на UIBezierPath.Он не такой всеобъемлющий, как рисование в Core Graphics, но может использоваться в вашей реализации ViewController.

0 голосов
/ 04 февраля 2012

Введите свой код для рисования в вопросе, и я могу дать вам конкретный ответ.

Обычно вам просто нужно установить цвет заливки, используя

[[UIColor redColor] setFill];

И любые фигуры, которые вы рисуете в своей основной графике, будут автоматически заполняться этим цветом.

...