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

Программирование iOS/iPhone

Войти
Регистрация
Восстановить пароль
 
clever_ui
1 / 1 / 1
Регистрация: 29.12.2013
Сообщений: 5
#1

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

21.02.2014, 17:24. Просмотров 607. Ответов 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. Как решить проблему?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
21.02.2014, 17:24
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Запаздывающая отрисовка линий в простой рисовалке для iPad (Программирование iOS):

Запуск приложения для ipad - Программирование iOS
Подскажите с помощью чего можно запустить приложения для ipad на хакинтоше,возможности запуска на ipad не имею,т.к. нет данного девайса

Ide (редакторы кодов для ipad) - Программирование iOS
Народ, добрый день. Сильно не пинайте, ноутбук не могу взять по причинам того что полетел, есть сейчас на руках ipad4 mini, скажите...

Общая библиотека для IPhone & IPad - Программирование iOS
Доброго времени суток, господа. Ситуация: Я студент, в основном специализируюсь на C++ и C#, про Objective-C и создание...

Выделение линий в рисовалке - Java
Написал рисовалку. Но не знаю как реализовать выделение линии, круга или дуги при щелчке мышью на них. Подскажите как это можно сделать?

Отрисовка линий в pictureBox - C#
Собственно проблема такая - после того, как отпускаю кнопку мыши - линия пропадает public partial class Editor : Form { ...

Отрисовка линий в объеме - OpenGL
Ребята помогите не могу разобраться. Хочу, например, натыкать много прямых линий и отрисовать их в объеме. Делаю так: Так я вызываю...

1
glvrzzz
95 / 71 / 12
Регистрация: 12.12.2012
Сообщений: 214
22.02.2014, 16:25 #2
Тормозит как раз из-за того, что ваша рисовалка сильно простая. Конкретно из-за вызова UIGraphicsBeginImageContext для каждой точки, а также из-за того, что каждый раз перерисовывается вся вьюшка.
На будущее, когда что-то тормозит, пользуйтесь профайлером, там прекрасно бы увидели в чем проблема.
Еще посмотрите мой ответ в этой теме по поводу рисовалок.
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
22.02.2014, 16:25
Привет! Вот еще темы с ответами:

Массив: отрисовка массива линий по координатам - Turbo Pascal
Создать программу выполняющую действия: 1)вводить и сохранять в массиве данных введенные пользователем координаты линий {знаю что у линий...

Отрисовка сетки с заданным количеством линий по вертикали/горизонтали - C#
Как сделать так чтобы сетка не сама отрисовывалась,а юзер задавал число отрисованных сеток в окошках "По вертикали", и "По...

Canvas. Отрисовка заданного количества вертикальных линий с определенным шагом - Delphi
Здравствуйте. Помогите разобраться с проблемой. Есть таблица StringGrid1. В ней будет определенное количество строк. Каждый раз разное. К...

Отрисовка линий движения материальной точки при u_1=const и u_2=const - Matlab
Добрый день. У меня не получается построить графики движения материальной точки для u_1=const и u_2=const. Полином 3-ей степени, решаю...


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

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Опции темы

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