Как реализовать ластик в простом графическом редакторе? - PullRequest
1 голос
/ 07 сентября 2011

Я хочу создать простой графический редактор на iOS, в котором я использую растровый графический контекст и пути Безье для преобразования строк в изображения.

Я не нашел способа создать ластик .

У вас есть идеи?

- (void)drawRect:(CGRect)rect {
    [[UIColor blackColor] setStroke];

    CGContextRef aRef = UIGraphicsGetCurrentContext();

    aPath.lineWidth = 5;
    [aPath stroke];
    [[[UIColor blackColor] colorWithAlphaComponent:0] setStroke];
    bPath.lineWidth = 5;
    [bPath stroke];
   movesss= CGBitmapContextCreateImage(aRef);
    if (movesss==NULL) {
        NSLog(@"null =(");
    }
}

-(void)moveTo:(CGPoint)pos {
    if(del){
        [bPath moveToPoint:pos];
    }
    else{
        [aPath moveToPoint:pos];
    }
}

-(void)cret{
    aPath=[[UIBezierPath bezierPath] retain];
    bPath=[[UIBezierPath bezierPath] retain];
    del=NO;
}

-(void)lineTo:(CGPoint)pos {
    if(del){
        [bPath addLineToPoint:pos];
    }
    else{
        [aPath addLineToPoint:pos];
    }
    [self setNeedsDisplay];
}

-(void)imgf{
    UIImage *imageToSave=[[UIImage imageWithCGImage:movesss] retain];

   UIImageWriteToSavedPhotosAlbum(imageToSave, nil, nil, nil);
    UIImageView *trew=[[UIImageView alloc] initWithFrame:[self frame]];
    [trew setBackgroundColor:[UIColor greenColor]];
    [trew setImage:imageToSave];
    [self addSubview:trew];
}

-(void)swittch{
    del=!del;
}


Что не такздесь

Ответы [ 2 ]

1 голос
/ 25 августа 2012

Рисование цветом фона будет работать как ластик.

1 голос
/ 07 сентября 2011

Вы можете реализовать ластик в виде пера, который рисует полностью прозрачным цветом (установите альфа в ноль). UIColor обладает параметром "alpha", который можно установить при создании с помощью colorWithAlphaComponent: например.

Или просто используйте UIColor * color = [UIColor clearColor];

EDIT:

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

Согласно этому вопросу , прозрачные цвета не работают для этой цели. Вы должны знать свой цвет фона и рисовать им. Если ваш фоновый цвет "прозрачный" ... я в растерянности.

...