Основные графики. Лучшая практика для динамического рисования с событием перемещения мыши?
Я рисую изображение выше в Core Graphics, используя вызовы CGContextAddLineToPoint. Само изображение не важно. Однако, как и в программе, форма основана на положении мыши. Проблема начинается там, где после поворота изображения, когда пользователь изменяет размеры углов, все нужно пересчитать и отобразить, пока мышь перемещается. И есть много вычислений.
Из-за всех этих вычислений не только динамически увеличивалось бы отставание, оно бы «прыгало», поскольку оно было пересчитано и перемещено динамически. Я выяснил решение, чтобы укрепить наружную коробку, вычерчивая 4 простых линии для разных расчетных точек, но проблема кроется во всем остальном.
Коробка будет содержать различные другие формы и линии, а пересчет каждого из них, подлежащих изменению при перемещении мыши, кажется утомительным и неэффективным. Мне интересно, что лучше всего реализовать, используя CGLayer или CGImageRef для этого и как вы их реализуете?
Основная проблема заключается в том, что я делаю так много вычислений, пока мышь перемещается, что изображение ОЧЕНЬ заметно отстает и даже прыгает вокруг, рендеринга все динамически.
Забавно, что вы говорите, потому что это точно так же, как я сделал около дня назад. Я в основном делаю первоначальное «сохраненное изображение» исчезающим и рисую простой контур фигуры в различные расчетные точки в соответствии с моим сообщением над базой на позиции мыши. Затем, как только мышь отпустится, форма снова появится в ее окончательной истинной форме со всеми ее внутренними линиями. Однако в идеальном мире я хотел видеть, могу ли я как-то заставить все линии и все остальное динамически меняться. Как я могу хранить свои CGPaths и т. Д. В CGImage? – Gab
Я думаю, вам нужно сделать правильный анализ вашего приложения. Измерьте, как долго выполняются вычисления и чертеж. Исходя из этого, вам нужно решить, возможно ли вообще избавиться от контура. Если это возможно, у вас будет больше информации, где можно оптимизировать, например. рисование или буферизация. Затем вы можете опубликовать свой код и задать другой конкретный вопрос. Но с текущей информацией, это просто догадки, и никто не сможет предоставить какой-либо код. – Codo