Нарисуйте экран с помощью кварца - PullRequest
1 голос
/ 21 июня 2010

Я пытаюсь решить, как лучше всего рисовать поверх всех других элементов на экране в OS X. Я не хочу препятствовать способности пользователя взаимодействовать со своими приложениями, но хочу 'аннотировать их.Я хочу иметь возможность рисовать до 20 различных аннотаций.В верхней части этого снимка экрана от Gizmodo хорошо видно, что вид того, что я хочу сделать.http://gizmodo.com/assets/resources/2006/07/04%20Safari.jpg (извините, я слишком новичок, чтобы публиковать его как изображение)

Вопросы, на которые я думаю Мне нужно ответить:

  1. Должен ли я создать одно окно для каждого рисунка и нарисовать его?Если да, то как мне минимизировать накладные расходы?
  2. Какой тип окна или другой контекст мне следует использовать, если я не хочу никакого оформления окна?

Не думаю, чтоМне нужны накладные расходы на создание 20 окон, но я также не знаю, хочу ли я создать полноэкранное невидимое окно, содержащее мой контекст (я полагаю, подклассифицированный NSView), потому что я боюсь, что это) вызовет проблемы взаимодействияс тем, что ниже, и б) нарушить тонкости только перерисовки, когда это необходимо (мой фактический рисунок, вероятно, будет занимать только 10% экрана)

Я раньше не работал с Quartz2d, ​​поэтому я просто не могу получитьмоя голова вокруг того, как получить 'правильный' контекст, чтобы извлечь из документации.Любая помощь будет оценена.

Спасибо,

Кто

1 Ответ

1 голос
/ 22 июня 2010

Вы можете рисовать только в окне. Вы можете сделать прозрачное окно без полей, но оно должно быть спереди.

Вы можете установить его уровень на что-то вроде NSPopUpMenuWindowLevel, чтобы он рисовался над другими окнами (это будет очень раздражать пользователей), но нажатие на него будет:

а) активировать и вывести на передний план свое приложение

b) Запретить приложению получать события мыши

Это то, что вы хотите?

...