gpt4 book ai didi

cocoa - 如何让NSImage自动缩放到NSImageView?

转载 作者:行者123 更新时间:2023-12-03 17:23:18 25 4
gpt4 key购买 nike

我正在尝试实现一个由draw方法绘制的程序化图像,该方法能够在任何分辨率下绘制完美的图像。想象一下可以调整大小以填充任何区域而无需拉伸(stretch)或插值的程序化纹理。

为此,我创建了一个自定义 NSImageRep 来实现绘图代码。此方法中的代码可以访问图像代表的大小,因此它可以针对每个大小重新绘制自身。为了显示图像,我将此 NSImageRep 分配给 NSImage,然后将其传递给 NSImageView

现在的问题是 NSImage 不会调整大小。我的意思是它会拉伸(stretch)并插值以填充 NSImageView,但 NSImage 的大小不会改变,因此它的 NSImageRep 绘制代码始终绘制为最初创建 NSImage 时使用的大小。我可以更改 NSImage 的大小,它会

换句话说,我已经成功实现了一个NSImage,它可以以任何尺寸正确绘制自身(无需插值)。所以我的问题是,如何使 NSImage 自动调整自身大小以匹配它所在的 NSImageView 的大小?

理想情况下,我想将其实现为 NSImage 上的一个类别,但我不确定如何继续。

注意我知道这听起来像是我只想实现一个自定义的 NSView ,但大局是我试图从 iOS 的 复制 ressizedImageWithCapInsets: 方法UIImage 并为 OS X 的 NSImage 创建一个实现。

最佳答案

忘记NSImageRep

你想要使用的只是NSImage

+ (id)imageWithSize:(NSSize)size flipped:(BOOL)drawingHandlerShouldBeCalledWithFlippedContext drawingHandler:(BOOL (^)(NSRect dstRect))drawingHandler

这将使您能够做您想做的事。

关于cocoa - 如何让NSImage自动缩放到NSImageView?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14703188/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com