我想在iOS上创建简单的图形编辑器,其中我使用位图图形上下文和bezier路径将线条转换为图片。
我没有找到创建橡皮擦的方法。
你有什么想法吗?
- (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;
}
这有什么不对?
答案 0 :(得分:1)
您可以将橡皮擦实现为使用完全透明颜色绘制的笔(将alpha设置为零)。 UIColor拥有一个“alpha”参数,可以在创建时使用colorWithAlphaComponent进行设置:例如。
或者只使用UIColor * color = [UIColor clearColor];
编辑:
我认为用clearColor绘画会用清晰像素替换像素。这是一种愚蠢的推理,因为如果是这种情况,用alpha-ed颜色多次绘画将无法正常工作。
根据此question,透明色不适用于此目的。您需要知道您的背景颜色并使用它进行绘画。如果你的背景颜色是“透明的”......我很茫然。
答案 1 :(得分:1)
使用背景颜色绘画将用作橡皮擦。