私は3つのNSViewをCocoaアプリケーションに、それぞれ別のサブビューを持っています。トランスペアレントなNSImageを描画するとすべてのNSViewが透明になります
FirstNSView - > SecondNSView - > ThirdNSView
FirstNSViewは、コアグラフィックスを用いた固体背景の塗りつぶしを描画します。
SecondNSViewは他の多くのビューのコンテナビューです。
ThirdNSViewはdrawRect
に次のコードを使用して、そのフレームにNSImageではを描く:それはほとんどimg
の非透過領域のためのマスクとして機能する画像を許可するので、私はNSCompositeDestinationAtop
を使用しています
[img drawAtPoint:NSMakePoint(0, 0) fromRect:NSMakeRect(0, 0, img.size.width, img.size.height) operation:NSCompositeDestinationAtop fraction:1.0];
。
しかし、img
の透過領域は、私が期待しているようにFirstNSViewまで表示するのではなく、ウィンドウ全体を透明にします。他の複合タイプの実験をすることは、まだこの同じ問題につながるたこと
注:そうのように。
私はNSViewsが「レイヤー化」の対象ではないことについて多くのことを読んだことがありますが、ここで関連性があるかどうかは分かりません。これまでNSViewにコアグラフィックスを使用し、レイヤーを「後ろに」公開している透明なセクションを使って細かい描画を行ってきました。この問題が発生したのは、この画像を合成することだけです。
私はこれがなぜ起こっているのか、それを解決するための方法についての参考になりました。
スクリーンショットの紫色が私のデスクトップです。あなたが見ることができるように、紫は複合画像である灰色の矢印の下にあります。いいえ、NSCompositeSourceOverは必要ありません。http://i.imgur.com/LZgxk.pngにつながります。私は元の絵のように効果を欲しがっているが、デスクトップは現時点では見えない。 – JoeR