6

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

4 に答える 4

1

iOSで描画を消去するには、これを試してください:

- (IBAction)eraserPressed:(id)sender { 
    red = 255.0/255.0;
    green = 255.0/255.0;
    blue = 255.0/255.0;
    opacity = 1.0;
}
于 2014-08-02T13:55:40.717 に答える
1

まず、ロジックは ImageView にレイヤーを作成する必要があります。

次に、そのレイヤーに描画してから、白い色を渡して消去できます。

消去のように見え、要件に応じてビューが次のようになります。

それはきっとうまくいくでしょう。

于 2013-10-04T07:27:32.290 に答える
0

描画ボタンで行ったのと同じロジックを消しゴムボタンに実装してみませんか。消しゴムのストロークのデフォルトの色を白色または背景の色にするだけです。

于 2013-10-04T05:54:59.343 に答える