2013-10-04 11 views
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); 
} 

は親切に私が何をしたかのミス、私をオフにします。

+0

のdrawRectは毎回呼び出されるあなたはストロークを作っているとき、あなたのdrawRectであなたはそれが呼び出されている黒毎回のようにストロークの色を設定しているので、したがって、私がしたいです消去ボタンを押して消去を試みると、黒いストロークを取得するかどうかを尋ねます。 – azmuhak

+0

はい、絶対にストロークは黒色です。私は疑問も持っています。私が消したい場合は、drawRectメソッドを呼び出す必要があるということです。それは、黒の色で図面に影響を与えずに、コード内で行われる変更は何ですか?また、線を消去します。 –

+0

うーん、簡単な方法は、bool値を使用し、消去ボタンアクションではboolを設定し、draw rectメソッドではブール値に応じてストロークの色を黒または白に設定します。 – azmuhak

答えて

0

なぜ、描画ボタンで行ったのと同じ論理をイーサーソルボタンに実装しませんか。消しゴムのストロークのデフォルトの色を白色にするか、背景を色づけするだけです。

+0

私はしようとしましたが動作しません –

+0

ポストコードスニペットかもしれないし、私はそれをチェックアウトすることができますか? – azmuhak

+0

先生、自分の投稿を編集しました。これをチェックしてください。 –

1

描画することによって、画面上に線を描いていることを意味します。たとえば、白い線と既存の色付きの線を置き換えるように白とアルファ1を設定することによって同じことができます。より良い tutorial hereThisも重要と思われました。

+0

私は論理を知っているし、試してみましたが、私は消去できませんでした。 –

+0

あなたは光線wenderlichチュートリアルを見ました、その作品は良いです。 – satheeshwaran

+0

はい、私はちょうどそのチュートリアルを通過した2日前です。しかし、私は試してみませんでした。それは非常に多くの機能を持っています。少し混乱。 –

1

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

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

これは消去のように見え、要件に応じて表示されます。

それはうまくいくでしょう。

+0

はいの場合は、あなたのためにこの助けですか? – virantporwal

+0

はい、これが行われます。これをテキストとして保存し、テーブルビューにデータとして表示する必要があります。 –

+0

OK投票私の答え... – virantporwal

1

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

- (IBAction)eraserPressed:(id)sender { 
    red = 255.0/255.0; 
    green = 255.0/255.0; 
    blue = 255.0/255.0; 
    opacity = 1.0; 
} 
関連する問題