2013-10-04 1 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 draw, чтобы цвет вашего штриха был либо черным, либо белым, в зависимости от значения bool. – azmuhak

ответ

0

Почему бы вам не реализовать ту же логику в кнопке erasor, как и в кнопке рисования. просто сделайте по умолчанию цвет штриха в ластике как белый цвет или какой-либо цвет вашего фона.

+0

Я пробовал, но он не работает –

+0

Возможно, вы можете опубликовать фрагмент кода, и я могу проверить его для вас? – azmuhak

+0

Сэр, я редактировал свое сообщение с моей кодировкой. Пожалуйста, проверь это. –

1

Итак, рисуя, вы имеете в виду, что вы нарисовали линии на экране, скажем, с каким-то цветом, вы можете сделать то же самое, установив белый цвет и альфа-1, чтобы белые линии заменили существующие цветные линии. Лучше tutorial here. This также показалось важным.

+0

Я знаю логику и тоже пытался, но я не мог стереть. –

+0

Увидел урок луча, он хорошо работает. – satheeshwaran

+0

Да, за два дня до того, как я только что перешел этот учебник. но я не пробовал. У него так много функциональных возможностей. Сбивать с толку немного. –

1

Прежде всего, ваша логика должна сделать слой на ImageView.

затем вы можете нарисовать на этом слое, а затем пропустить белый цвет для стирания.

Это будет выглядеть как стирание, и ваше представление будет выглядеть согласно требованиям.

Это грозно работа.

+0

Помогла ли вам эта помощь, если да, тогда проголосуйте, пожалуйста? – virantporwal

+0

Да, это будет. Дальнейший процесс состоит в том, чтобы сохранить это как текст и отобразить как данные в таблице. –

+0

ок до голосования мой ответ ... – virantporwal

1

Попробуйте стереть рисунок в прошивкой:

- (IBAction)eraserPressed:(id)sender { 
    red = 255.0/255.0; 
    green = 255.0/255.0; 
    blue = 255.0/255.0; 
    opacity = 1.0; 
} 
Смежные вопросы