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 回答