последнее содержимое CGcontext не сохраняется? - PullRequest
0 голосов
/ 14 марта 2011

Я использую следующий код для рисования линии, основанной на перемещении касания, как в MS Paint?Он работает нормально. Но когда я пытаюсь снова нарисовать линию после прикосновения «Завершено», Предыдущая строка стирается. Помогите, пожалуйста?

 - (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event 
{
    mouseSwiped = NO;
    UITouch *touch = [touches anyObject];

    if ([touch tapCount] == 2)
    {
        //drawImage.image = nil;
        //alphavalue = 0.0;
        //isErase = TRUE;
        //return;
    }

    lastPoint = [touch locationInView:self.view];
}

Ответы [ 3 ]

1 голос
/ 14 марта 2011

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

0 голосов
/ 14 марта 2011

Попробуйте сначала создать CGContext с помощью CGBitmapContextCreate (), сохраните его, а затем используйте тот же контекст для всего вашего рисунка.

0 голосов
/ 14 марта 2011

а) не держитесь за графический контекст, подобный этому

б) вы хотите нарисовать изображение из-за переопределения drawRect:. В качестве альтернативы, вы можете удерживать нужные данные и делать недействительными те прямоугольники, которые вам нужны для рисования в touchesMoved. затем используйте состояние, которое вы спрятали, чтобы нарисовать из drawRect:.

Суть в том, что вы должны сделать недействительным, а затем рисовать по запросу. рисование вне этого контекста оставит вас с непредсказуемыми результатами рисования (обрезанные фрагменты, неожиданное упорядочение и другое поведение), а также заставит программу рисовать несколько раз.

...