Изменение цвета - PullRequest
       1

Изменение цвета

0 голосов
/ 22 ноября 2011

Привет, хочу выбрать цвета в проекте раскраски, который я пробую.Я новичок в этом, так что это может быть глупый вопрос.Я использую кнопки для выбора разных цветов.Но когда кнопка нажата, единственное, что происходит, это то, что последний пиксель нарисованной линии меняется на выбранный цвет.В приведенном ниже коде первый тег стирает рисунок, а второй должен изменить цвет на следующую нарисованную линию ...

   -(IBAction)buttonClicked:(UIButton *)sender {
 switch (sender.tag)
{
    case 1: {
        drawImage.image = nil;
            return;
        }
        //lastPoint.y -= 0;
    break;
    case 2: {

        UIGraphicsBeginImageContext(self.view.frame.size);
        [drawImage.image drawInRect:CGRectMake(0, 0, drawImage.frame.size.width, drawImage.frame.size.height)]; 
        CGContextSetLineCap(UIGraphicsGetCurrentContext(), kCGLineCapRound); 
        CGContextSetLineWidth(UIGraphicsGetCurrentContext(), 3.0);
        CGContextSetRGBStrokeColor(UIGraphicsGetCurrentContext(), 0.0, 1.0, 2.0, 1.0);
        CGContextMoveToPoint(UIGraphicsGetCurrentContext(), lastPoint.x, lastPoint.y);
        CGContextAddLineToPoint(UIGraphicsGetCurrentContext(), lastPoint.x, lastPoint.y);
        CGContextStrokePath(UIGraphicsGetCurrentContext());
        CGContextFlush(UIGraphicsGetCurrentContext());
        drawImage.image = UIGraphicsGetImageFromCurrentImageContext();
        UIGraphicsEndImageContext();
    }
       break;

    default:
        break;
    }
}

1 Ответ

1 голос
/ 22 ноября 2011

Код:

CGContextMoveToPoint(UIGraphicsGetCurrentContext(), lastPoint.x, lastPoint.y);
CGContextAddLineToPoint(UIGraphicsGetCurrentContext(), lastPoint.x, lastPoint.y);

на самом деле не рисует линию, поскольку начало строки CGContextMoveToPoint и конец строки CGContextAddLineToPoint совпадают.

Aпара точек, меньше кода, тем лучше:

  1. Устраните оператор switch, указав цель для каждой кнопки.
  2. Вызовите UIGraphicsGetCurrentContext() один раз и сохраните его в переменной, только дляясность.

Пример:

CGContextRef context = UIGraphicsGetCurrentContext();

CGContextSetLineCap(context, kCGLineCapRound); 
CGContextSetLineWidth(context, 3.0);
CGContextSetRGBStrokeColor(context, 0.0, 1.0, 2.0, 1.0);
CGContextMoveToPoint(context, firstPoint.x, firstPoint.y);
CGContextAddLineToPoint(context, lastPoint.x, lastPoint.y);
CGContextStrokePath(context);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...