2012-01-20 1 views
1

境界のないウィンドウでウィンドウがアクティブになると、より濃くて大きな影を作成する方法は?濃い影を持つ境界のないウィンドウを作成する

私は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

これは、ウィンドウのstyleMaskに関連付けられています。 NSTitledWindowMaskウィンドウに設定すると、影が大きくなります。

1

が、私はおそらくのためオフshadowプロパティをオンにしたい..

サブクラスNSWindowのを私も無効影を試してみましたが、それはあまりにも助けにはなりませんでした私のNSWindowサブクラス内のdisplay関数からシャドー描画を処理します([super display]を呼び出すことを忘れずに、さまざまなコンテンツ&サブビューには独自の描画メソッドが呼び出されるようにしてください)。

ここにはa potentially related question with an answer for you to considerです。

+0

迅速な対応をありがとうございます。うーん..それは問題を解決していない..あなたが私に与えたあなたの例では、同じ問題(RoundTransparentWindowプロジェクト)です。このプロジェクトでは、ちょうど私のアプリのような小さな影です。あなたの欲望[スーパーディスプレイ]を試しましたが、これも助けになりませんでした。 –

+0

私が言っていたことは、 'display'が呼び出されたときにあなた自身が影を描くべきだということでした。 AFAIK、これはOSが提供するものよりも「暗い影」を得る唯一の方法です。 'display'が呼び出されると、ウィンドウフレームの矩形を取得し、その境界のすぐ外側に矩形を描画する方法を見つけ出します。 –

+0

うーん..あなたの提案に感謝私はこれを行うにそれを試みます。 +1 –

1

一般的に私はダルマジオは境界がない窓が何らかの理由で陰影の明瞭度が低いという彼の見解で正しいと思います。たぶんアップルとファイルレーダー。