2012-01-20 2 views
1

Как создать темную и большую тень, когда окно становится активным в окне без полей?Сделать окно без полей с более темной тенью

Я подклассифицировал NSWindow, и мое окно становится главным окном и ключевым окном, но это не помогает .. тень все еще мала. Так может быть, кто-то знает, как это исправить? Я также попытался ТЕРЯЕТСЯ тень, но это не помогло тоже ..

подклассы NSWindow:

- (id)initWithContentRect:(NSRect)contentRect 
      styleMask:(NSUInteger)windowStyle 
       backing:(NSBackingStoreType)bufferingType 
       defer:(BOOL)flag 
{ 

    self = [super initWithContentRect: contentRect 
        styleMask: NSBorderlessWindowMask 
        backing: NSBackingStoreBuffered 
         defer: NO]; 

    if(self) 
    { 
     [self setHasShadow:YES]; 

     [self setBackgroundColor:[NSColor clearColor]]; 
     [self setOpaque:NO]; 
    } 

return self; 
} 

ответ

1

Это связано с маской стиля окна. Если оно установлено в окне NSTitledWindowMask, вы получите большую тень.

1

Если бы это была моя проблема, я бы, вероятно, превратить тень свойство от для без границ, а затем обработать теневой рисунок из функции display в моем подклассе NSWindow (убедитесь, что вы вызываете [super display], так что различные подкатегории & получают свои собственные методы рисования).

Адрес a potentially related question with an answer for you to consider.

+0

Благодарим за быстрый ответ. Хм .. это не решило проблему .. в вашем примере, который вы мне дали, та же проблема (проект RoundTransparentWindow). В этом проекте всегда есть небольшая тень, как в моем приложении. Я попробовал ваш sugestion [суперэкран], но это тоже не помогло. –

+0

То, что я говорил, было то, что вы должны сами рисовать тень, когда вызывается 'display'. AFAIK, это единственный способ получить «более темную большую тень», чем то, что предоставляет ОС. Когда вызывается 'display', вызывается прямоугольник оконного фрейма, а затем вычисляем, как рисовать прямоугольник за пределами этих границ. –

+0

Хмм .. спасибо за ваши предложения Я попробую это сделать. +1 –

1

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

Смежные вопросы