quartz2d переводит происхождение - PullRequest
2 голосов
/ 15 января 2011

Я понимаю, что quartz2d состоит в том, что код CGContextTranslateCTM(context, x, y); переводит систему координат. У меня есть представление quartz2d с множеством фигур, и пользователь должен иметь возможность перемещаться и увеличивать его. Однако при использовании кода CGContextScaleCTM(context, scaleX, scaleY); все масштабируется вокруг начала координат, а не центра точки обзора, которую просматривает пользователь.

Мое решение для этого было использовать следующий код:

CGContextRef context = UIGraphicsGetCurrentContext();
CGContextTranslateCTM(context, 512.0+offset.x, 384.0+offset.y);  
//(512, 384) is the center of the iPad screen
CGContextScaleCTM(context, scale, scale);

Вы можете хорошо переводить, но все равно в углу. Что не так?

РЕДАКТИРОВАТЬ: Ох. Вот это да. Duh. Если вы перемещаете начало координат, формы тоже перемещаются, поэтому вы не можете переместить его относительно фигур. Теперь я знаю, что не так, но как мне это сделать? (Переместите начало координат независимо от форм)

Ответы [ 2 ]

0 голосов
/ 01 декабря 2012

Вы можете создать класс UIView для каждой фигуры. Создание экземпляра объекта UIView для каждой фигуры для перемещения вокруг.

Затем вы изменяете центр объектов вида с помощью shape.center = CGPointMake (x, y); Вероятно, метод вызывает bounds.center, смотрите в UIView.

Это автоматически вызовет drawRect (), и все в порядке!

0 голосов
/ 15 января 2011

У вас нет большого опыта использования CoreGraphics C API, но вы не задумывались над тем, чтобы привязать свой взгляд к UISCrollView?Если функциональность есть и она бесплатна, почему бы не использовать ее?

...