【问题标题】:Scaled image in NSImageView looks bad with layer-backing onNSImageView 中的缩放图像在启用图层支持时看起来很糟糕
【发布时间】:2013-02-14 23:25:04
【问题描述】:

我想要一个带有渐变背景和图像的视图。所以我为图层打开了图层支持,添加了NSImageView并将图层设置为CAGradientLayer。然而,这使得按比例缩小的图像非常难看。查看比较:

图层打开:,图层关闭:

有没有人也观察到这一点?有没有办法在不关闭图层支持的情况下解决这个问题?

【问题讨论】:

    标签: cocoa core-animation nsimageview


    【解决方案1】:

    在遇到完全相同的问题后,我偶然发现了这个问题。 layer-backed 的 NSImageView 的渲染看起来非常可怕,但非 layer-backed 的渲染看起来很棒。

    我尝试了许多不同的方法,但最后实际上是来自我当地 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 去的东西是什么。我讨厌提供一个我不完全理解的解决方案,但至少它是一些东西。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-06-04
      • 2012-12-03
      • 1970-01-01
      • 2014-04-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-10-20
      相关资源
      最近更新 更多