如何使用按钮单击擦除绘图?

时间:2013-10-04 05:14:28

标签: ios

我在IOS中使用绘图应用程序时遇到了一些麻烦。我在一些教程的帮助下创建了自由手绘图。但我发现擦除图纸有些困难。在我的应用程序中,我有橡皮擦按钮作为背景图像。单击橡皮擦按钮后,当我在绘图上滑动时,无论我在哪里滑动,它都会擦除绘图。任何人都可以帮我这样做。 提前谢谢。

以下是我的代码:

@implementation LinearInterpView
{
    UIBezierPath *path;
}

- (id)initWithFrame:(CGRect)frame
{
    self = [super initWithFrame:frame];
    if (self) {
        // Initialization code
    }
    return self;
}

-(id)initWithCoder:(NSCoder *)aDecoder {

    if(self = [super initWithCoder:aDecoder]) {
        [self setMultipleTouchEnabled:YES];
        [self setBackgroundColor:[UIColor whiteColor]];
        path=[UIBezierPath bezierPath];
        [path setLineWidth:2.0];
    }
    return self;
}

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

-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event{
    UITouch *touch=[touches anyObject];
    CGPoint p=[touch locationInView:self];
    [path moveToPoint:p];
}

-(void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event{
    UITouch *touch=[touches anyObject];
    CGPoint p=[touch locationInView:self];
    [path addLineToPoint:p];
    [self setNeedsDisplay];
}

-(void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event
{
    [self touchesMoved:touches withEvent:event];
}

-(void)touchesCancelled:(NSSet *)touches withEvent:(UIEvent *)event{

    [self touchesEnded:touches withEvent:event];
}

// This is the button action to erase the drawing.
- (IBAction)erase:(id)sender {
    CGContextRef cgref=UIGraphicsGetCurrentContext();
    CGContextSetBlendMode(cgref, kCGBlendModeClear);
}

请清楚我,我做了什么错误。

4 个答案:

答案 0 :(得分:1)

因此,通过绘制你的意思是你在屏幕上绘制线条,用某种颜色说明你可以通过设置白色和alpha 1来做同样的事情,以便白线代替现有的彩色线条。一个更好的 tutorial here This 似乎也很重要。

答案 1 :(得分:1)

首先,你的逻辑应该是在ImageView上创建一个图层。

然后你可以在那个图层上绘制然后传递白色来擦除。

它看起来像擦除,你的视图将根据要求看起来像。

这将非常有用。

答案 2 :(得分:1)

尝试使用此方法擦除iOS中的绘图:

- (IBAction)eraserPressed:(id)sender { 
    red = 255.0/255.0;
    green = 255.0/255.0;
    blue = 255.0/255.0;
    opacity = 1.0;
}

答案 3 :(得分:0)

为什么不在绘图按钮中实现与删除按钮相同的逻辑。只需将橡皮擦中笔划的默认颜色设置为白色或为背景设置颜色。