Форум программистов, компьютерный форум CyberForum.ru

Запаздывающая отрисовка линий в простой рисовалке для iPad - Программирование iOS/iPhone

Восстановить пароль Регистрация
 
clever_ui
1 / 1 / 1
Регистрация: 29.12.2013
Сообщений: 5
21.02.2014, 17:24     Запаздывающая отрисовка линий в простой рисовалке для iPad #1
Помогите решить проблему с запаздывающей отрисовкой линий в простой рисовалке для iPad, вот код:

Objective-C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
    mouseSwiped = NO;
    UITouch *touch = [touches anyObject];
    lastPoint = [touch locationInView:self.view];
    NSLog(@"Начали");
}
 
- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event {
    mouseSwiped = YES;
    UITouch *touch = [touches anyObject];
    CGPoint currentPoint = [touch locationInView:self.view];
    UIGraphicsBeginImageContext(self.view.frame.size);
    [self.mainDrawImage.image drawInRect:CGRectMake(0, 0, self.view.frame.size.width, self.view.frame.size.height)];
    CGContextMoveToPoint(UIGraphicsGetCurrentContext(), lastPoint.x, lastPoint.y);
    CGContextAddLineToPoint(UIGraphicsGetCurrentContext(), currentPoint.x, currentPoint.y);
    CGContextSetLineCap(UIGraphicsGetCurrentContext(), kCGLineCapRound);
    CGContextSetLineWidth(UIGraphicsGetCurrentContext(), brush);
    CGContextSetRGBStrokeColor(UIGraphicsGetCurrentContext(), red, green, blue, 1.0);
    CGContextSetBlendMode(UIGraphicsGetCurrentContext(),kCGBlendModeNormal);
 
    CGContextStrokePath(UIGraphicsGetCurrentContext());
    self.mainDrawImage.image = UIGraphicsGetImageFromCurrentImageContext();
    [self.mainDrawImage setAlpha:opacity];
    UIGraphicsEndImageContext();
    lastPoint = currentPoint;
 
    NSLog(@"Двигаем");
}
 
- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event {
 
    if(!mouseSwiped) {
        UIGraphicsBeginImageContext(self.view.frame.size);
        [self.mainDrawImage.image drawInRect:CGRectMake(0, 0, self.view.frame.size.width, self.view.frame.size.height)];
        CGContextSetLineCap(UIGraphicsGetCurrentContext(), kCGLineCapRound);
        CGContextSetLineWidth(UIGraphicsGetCurrentContext(), brush);
        CGContextSetRGBStrokeColor(UIGraphicsGetCurrentContext(), red, green, blue, opacity);
        CGContextMoveToPoint(UIGraphicsGetCurrentContext(), lastPoint.x, lastPoint.y);
        CGContextAddLineToPoint(UIGraphicsGetCurrentContext(), lastPoint.x, lastPoint.y);
        CGContextStrokePath(UIGraphicsGetCurrentContext());
        CGContextFlush(UIGraphicsGetCurrentContext());
        self.mainDrawImage.image = UIGraphicsGetImageFromCurrentImageContext();
        UIGraphicsEndImageContext();
    }
 
    UIGraphicsBeginImageContext(self.mainDrawImage.frame.size);
    [self.mainDrawImage.image drawInRect:CGRectMake(0, 0, self.view.frame.size.width, self.view.frame.size.height) blendMode:kCGBlendModeNormal alpha:1.0];
    self.mainDrawImage.image = UIGraphicsGetImageFromCurrentImageContext();
    UIGraphicsEndImageContext();
 
    NSLog(@"Конец");
}
При движении пальцем по экрану, отрисовка линии запаздывает тестирую на iPad2. Как решить проблему?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
21.02.2014, 17:24     Запаздывающая отрисовка линий в простой рисовалке для iPad
Посмотрите здесь:

Запуск приложения для ipad
Отличается ли разработка приложений для Ipad, Ipod Touch, Iphone?
Ищу программиста iphone/ipad для разработки логических игр
iPad просмотр видео сервера
Сохранение видео на ipad/iphone
Требуется разработка приложения iphone ipad
Разделение экрана на 2 зоны (ipad)
Общая библиотека для IPhone & IPad
Системные звуки в iPad iPhone
Переделать приложение с iphone на ipad
Большие таблицы на iPhone iPad
Ide (редакторы кодов для ipad)

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
glvrzzz
95 / 71 / 12
Регистрация: 12.12.2012
Сообщений: 214
22.02.2014, 16:25     Запаздывающая отрисовка линий в простой рисовалке для iPad #2
Тормозит как раз из-за того, что ваша рисовалка сильно простая. Конкретно из-за вызова UIGraphicsBeginImageContext для каждой точки, а также из-за того, что каждый раз перерисовывается вся вьюшка.
На будущее, когда что-то тормозит, пользуйтесь профайлером, там прекрасно бы увидели в чем проблема.
Еще посмотрите мой ответ в этой теме по поводу рисовалок.
Yandex
Объявления
22.02.2014, 16:25     Запаздывающая отрисовка линий в простой рисовалке для iPad
Ответ Создать тему
Опции темы

Текущее время: 07:51. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru