3

ご挨拶!私は問題があり、グーグルは結果をもたらしませんでした...

NSView (サブクラス) の drawRect メソッドを実装して、いくつかの影と半透明の塗りつぶしを描画しました。すべてが素晴らしく見えます!しかし今、ドラッグ アンド ドロップの目的で NSView (スナップショットを作成) から NSImage を作成する必要があります。

それは機能しますが、描画方法が異なります。より暗く、本来あるべきコントラストではありません。
なんで?多分 NSGraphicContext の異なるオプションが原因でしょうか? 助けやアドバイスが必要です!

NSView から NSImage を取得するコードは次のとおりです。

- (NSImage *)makeImageSnapshot {

    NSSize imgSize = self.bounds.size;

    NSBitmapImageRep * bir = [self bitmapImageRepForCachingDisplayInRect:[self bounds]];
    [bir setSize:imgSize];

    [self cacheDisplayInRect:[self bounds] toBitmapImageRep:bir];

    NSImage* image = [[[NSImage alloc] initWithSize:imgSize] autorelease];
    [image addRepresentation:bir];

    return image;
}

そして、視覚的に比較する画像は次のとおりです。

  1. 通常 - drawRect 通常の呼び出しで描画: http://cl.ly/image/213C1Y1V0v2H
  2. 悪い - NSImage にキャプチャ: http://cl.ly/image/183q442S2J14

違いは非常に小さいように思えるかもしれませんが、信じてください - アプリケーションで作業している間は明らかです。なぜそれが起こっているのかわかりません。そして、誰かが助けてくれることを願っています...

前もって感謝します!

4

1 に答える 1

4

透明性の問題は、それ自体がキャッシュされているときにブレンドする他のものがないことが原因であると思います。

-dataWithPDFInsideRect: または -dataWithEPSInsideRect: を試して、そこから画像表現を取得してください。

于 2012-08-23T18:53:53.667 に答える