2011-02-01 3 views
1

Я хочу нарисовать пользовательскую тень на NSWindow-Object.NSWindow с пользовательской тенью

Есть ли способ сделать это, передав собственный NSShadow-Object NSWindow? Или (частный) метод, где я могу поместить свой собственный код чертежа?

Thanks,

ответ

3

Не использовать. Вы не должны изменять внешний вид окна. Изменение внешнего вида пользовательского интерфейса разрешено только для Apple. Обычные приложения должны использовать стандартный.

Это говорит о том, что есть способ, если вы действительно настаиваете на этом. К сожалению, вы не можете просто присоединить NSShadow. Кроме того, насколько я понимаю, нет частного метода, который рисует тень. Это делается Window Server, а не приложением.

Но вы можете попросить сервер окон не добавлять тень. Вы заметили, что в интерфейсе Builder есть опция, подавляющая тень данного окна? Это соответствует свойству hasShadowNSWindow.

После подавления тени вам просто нужно нарисовать все самостоятельно. Хороший пример кода, который делает пользовательский чертеж окна, доступен по адресу ADC, поэтому взгляните на него.

+0

Посмотрел на приведенный пример. Хотя это хороший пример для рисования прозрачного окна без полей, он не очень-то говорит о том, как вручную рисовать тень окна - он просто использует тень по умолчанию, основанную на содержимом прозрачного окна без полей (в этом случае круг/пятиугольник образ). Связанный с этим вопрос: http://stackoverflow.com/questions/8948228/make-borderless-window-with-darker-larger-shadow – Dalmazio

+1

@Yuji, я заметил, что у тени NSWindow по умолчанию есть две разные тени, когда она включена фокус, а когда нет. В основном в фокусе больше тени. Как можно получить это поведение с помощью АЦП? –