1

我想在 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;
}


这里有什么问题?

4

2 回答 2

1

您可以将橡皮擦实现为使用完全透明颜色绘制的笔(将 alpha 设置为零)。UIColor拥有一个“alpha”参数,可以在创建时使用 colorWithAlphaComponent 进行设置:例如。

或者只是使用UIColor * color = [UIColor clearColor];

编辑:

我认为用 clearColor 绘画会用清晰的像素代替像素。这是愚蠢的推理,因为如果是这种情况,使用 alpha-ed 颜色多次绘制将无法正常工作。

根据这个问题,透明颜色不适用于该目的。你需要知道你的背景颜色并用它来绘画。如果你的背景颜色是“透明的”......我很茫然。

于 2011-09-07T07:31:13.743 回答
1

使用背景颜色绘画将用作橡皮擦。

于 2012-08-25T06:18:10.787 回答