NSImageView中的缩放图像看起来很糟糕,支持图层

时间:2012-11-27 16:38:45

标签: cocoa core-animation nsimageview

我想要一个带有渐变背景和图像的视图。因此,我为图层启用了图层支持,添加了NSImageView并将图层设置为CAGradientLayer。然而,这使得缩小的图像非常难看。见比较:

图层ON:Layer ON,图层OFF:Layer OFF

有人也观察过这个吗?有没有办法在不关闭图层背景的情况下解决这个问题?

1 个答案:

答案 0 :(得分:0)

在遇到完全相同的问题后,我偶然发现了这个问题。图层支持的NSImageView的渲染看起来非常可靠,但非图层支持的渲染看起来很棒。

我尝试了很多不同的东西,但最后这实际上是我当地CocoaHeads集团的人们最终提出解决方案的建议。

这是适用于我的代码。

    CGImageRef imageRef;
    NSRect     rect;

    rect      = NSZeroRect;
    rect.size = [_imageView bounds].size;

    imageRef = [image CGImageForProposedRect:&rect
                                     context:[NSGraphicsContext currentContext]
                                       hints:@{ NSImageHintInterpolation: @(NSImageInterpolationHigh)}];

    image = [[[NSImage alloc] initWithCGImage:imageRef size:rect.size] autorelease];

    [_imageView setImage:image];

首先,我只是假设插值模式是问题。但是,改变这个价值似乎没有什么区别。关于从NSImage-> CGImage-> NSImage出发的事情是什么呢。我讨厌提供一个我不完全理解的解决方案,但至少它是什么。