Какао + Кварц Новичок: получение цвета пикселей в NSImage и рисование за пределами экрана
Я пытаюсь создать пользовательскую палитру цветов для своего приложения Cocoa (Mac, а не iOS), и у меня возникли некоторые проблемы. Я достаточно знаком с различными шаблонами компьютерной графики и рисования, но я новичок в Какао, и я думаю, что проблема в основном заключается в том, чтобы заблудиться среди его многоуровневых графических технологий.
Я пытаюсь реализовать палитру цветов, которая прикреплена к большому боковому представлению, поэтому я подумал, что лучше будет нарисовать его самому, чем использовать стандартную плавающую панель. (У меня есть веская причина; не нужно упоминать предупреждения об отклонении от HIG от Apple.) При поиске наилучшего способа получения цвета пикселя, на который нажал NSImage (в данном случае colorWheel.PNG), я обнаружил, что это лучше всего. перейти в Core Graphics и нарисовать изображение в моем собственном растровом контексте.
... И это так далеко, как я пришел успешно. Я успешно создал контекст, но я не уверен, куда идти дальше и является ли это излишним. Я думаю, что я ищу, это твердое объяснение иерархии, в которой эти классы связываются вместе, и как я мог бы наилучшим образом создать эффект, который я ищу. Рисование вне экрана будет полезно во многих частях этого приложения, и я хотел бы понять это лучше.
Заранее спасибо.
1 ответ
Быстрое решение:
Нет необходимости рисовать его за кадром.
Просто создайте NSBitmapImageRep из NSImage.
И используйте colorAtX:y: для получения NSColor.
Конечно, вам нужно создать NSBitmapImageRep только один раз.
Затем ищите цвет каждый раз, когда пользователь щелкает мышью.
В моих приложениях это вообще не вызывает проблем с производительностью.
Используйте NSView для отображения PNG и получения координат.