Какао + Кварц Новичок: получение цвета пикселей на экране NSImage и рисование - PullRequest
0 голосов
/ 20 февраля 2011

Я пытаюсь создать пользовательскую палитру цветов для своего приложения Cocoa (Mac, а не iOS), и у меня возникли некоторые проблемы.Я достаточно знаком с различными шаблонами компьютерной графики и рисования, но я новичок в Какао, и я думаю, что проблема в основном заключается в том, чтобы потеряться среди его многоуровневых графических технологий.

Что я пытаюсьреализовать - это палитру цветов, которая прикреплена к большому боковому представлению, поэтому я подумал, что лучше будет нарисовать его самому, чем использовать стандартную плавающую панель.(У меня есть веская причина; не нужно упоминать предупреждения об отклонении от HIG от Apple.) При поиске наилучшего способа получить цвет пикселя, на который нажал NSImage (в данном случае colorWheel.PNG), я обнаружил, что это лучше всего.перейти в Core Graphics и нарисовать изображение в моем собственном растровом контексте.

... И это все, что мне удалось сделать.Я успешно создал контекст, но я не уверен, куда идти дальше и является ли это излишним.Я думаю, что я ищу, это твердое объяснение иерархии, в которой эти классы связываются вместе, и как я мог бы наилучшим образом создать эффект, который я ищу.Рисование вне экрана будет полезно во многих частях этого приложения, и я хотел бы понять это лучше.

Заранее спасибо.

1 Ответ

1 голос
/ 20 февраля 2011

Быстрое решение:

Нет необходимости рисовать его за кадром.
Просто создайте NSBitmapImageRep из NSImage.
И используйте colorAtX: y: для получения NSColor.

Конечно, вам нужно создать NSBitmapImageRep только один раз.
Затем ищите цвет каждый раз, когда пользователь щелкает мышью.
В моих приложениях это вообще не вызывает проблем с производительностью.

Используйте NSView для отображения PNG и получения координат.

...