Это на самом деле не вопрос рисования, а вопрос общего вида. Важно провести это различие.
Я опишу это в терминах прямоугольников, чтобы дать вам общее представление *. Вы должны убедиться, что вы понимаете иерархию представлений и геометрию представления в Какао. Без этих важных необходимых знаний вы останетесь мертвыми в воде.
Легко установить изображение NSButton, поэтому я оставлю это вам. Действие вашей кнопки, однако, скажет некоторому контроллеру показать «средство выбора изображения» для данной кнопки. Ваш инструмент выбора изображений будет иметь вид окна без полей со списком изображений внутри. Средство выбора изображений может быть IKImageBrowserView (для этого элемента управления необходимо включить Image Kit в Интерфейсном Разработчике), которое дает вам iPhoto-подобную сетку изображений (с / без заголовков, различными типами границ и т. Д.).
Объяснение работы этого контроллера и того, как он создает окно, управляет выделением и устанавливает изображение кнопки очень широкое , поэтому, если вы застряли на любом из этих шагов, вы ' Вам нужно будет создать отдельный вопрос для каждой проблемы , в противном случае этот ответ должен быть руководством по написанию вашего приложения для вас.
* Ваша проблема немного сложнее из-за вашего желания иметь «всплывающие окна» различной формы ... вам нужно убедиться, что ваши доступные фотографии аккуратно вписываются в форму, чтобы ни одно из них не было обрезано. Вооружившись базовыми знаниями геометрии вида, я оставлю это вам в качестве упражнения. Подсказка: вы можете использовать прозрачное окно без полей для размещения вида, который рисует себя в любой фигуре, какую пожелаете .