首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在NSImage.cgImage(forProposedRect:context:hints:)?中proposedRect是什么意思?

在NSImage.cgImage(forProposedRect:context:hints:)?中proposedRect是什么意思?
EN

Stack Overflow用户
提问于 2018-03-31 13:09:34
回答 1查看 400关注 0票数 1

我正在研究这个方法,因为我希望将相当大的NSImage转换为较小的CGImage,以便将其分配给CALayer的内容。

苹果的文档中我得到,proposedRect应该是将返回的CGImage的大小,如果将nil作为proposedRect,我将得到一个与原始NSImage大小相同的CGImage。(如果我错了,请纠正我。)

我试着用nil调用它作为建议的rect,它工作得很好,但是当我尝试给它一些矩形(比如(0,0,400,300) )时,得到的CGImage仍然是原始图像的大小。我正在使用的代码如下所示。

代码语言:javascript
复制
var r = NSRect(x: 0, y: 0, width: 400, height: 300)
let img = NSImage(contentsOf: url)?.cgImage(forProposedRect: &r, context: nil, hints: nil)

关于这件事我一定理解错了。我真的希望有人能告诉我那是什么。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-03-31 15:27:28

此方法不用于生成缩放图像。其基本思想是,将NSImage绘制到上下文中的输入rect将产生一定的结果。这个方法创建了一个CGImage,如果它在相同的上下文中被绘制为到输出,那么它将产生相同的结果。

因此,该方法返回与原始图像大小相同的CGImage是完全有效的。当将该CGImage绘制到rect时,就会发生缩放。

有关这一点的一些文档只存在于历史发行说明首次引入时。搜索"NSImage,CGImage和CoreGraphics阻抗匹配“。

要生成一个缩小的图像,您应该创建一个新的图像大小,锁定它的焦点,并绘制原始图像到它。或者,如果你不知道,你可以把你的原始图像指定为图层的contents,看看它是否有足够的性能。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49588105

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档