NSBezierPath к NSImage, чтобы избежать CoreAnimation - PullRequest
0 голосов
/ 08 ноября 2010

У меня есть приложение, которое в настоящее время имеет эту строку:

[myView setWantsLayer:YES];

Чтобы нарисовать элемент GUI через NSBezierPath. Эта строка обязательна, в противном случае, когда пользователь печатает в смежном (и перекрывающемся) NSTextField, содержимое myView вздрагивает.

Я обнаружил, что вызов CoreAnimation загружает каркас OpenGL, но не выгружает его. См. этот вопрос.

Я думаю, что могу обойти это, нарисовав NSBezierPath в NSImage и затем отобразить NSImage вместо NSBezierPath, но я не нашел ни одного источника показывает мне, как это сделать.


Edit:

Следует отметить, что я хочу сохранить это ПЕРЕД отображением NSBezierPath - поэтому решения, рисующие существующее представление для NSImage , бесполезны.


Вопрос:

Может ли кто-нибудь указать мне правильное направление для преобразования NSBezierPath в NSImage?

1 Ответ

3 голосов
/ 08 ноября 2010

Вы можете нарисовать что угодно прямо в NSImage, и вы можете создать пустой NSImage. Итак, создайте изображение, размер которого равен размеру границ пути, переведите путь таким образом, чтобы он находился в начале изображения, а затем заблокируйте фокус на изображении, нарисуйте путь и разблокируйте фокус.

...