问题标签 [nsimage]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
4 回答
4779 浏览

cocoa - 在核心数据模型中存储 NSImage

在核心数据模型中存储 NSImage 的正确方法是什么?我假设向实体添加属性并为其指定“二进制”类型应该可以工作,但它不起作用。我有一个包含 NSImageCells 列的表,它没有显示任何内容。

0 投票
1 回答
4832 浏览

objective-c - NSImage 旋转

我有一个窗口,里面有一个 NSView 的子类。在视图内部,我放置了一个 NSImage。

我希望能够将图像旋转 90 度,将图像的(新)左上角保持在视图的左上角。当然,我将不得不旋转图像,然后将其平移以将原点放回原处。

在 Carbon 中,我发现 CGContextRotateCTM 可以满足我的要求。但是,我在 ObjC 中找不到正确的调用。setFrameCenterRotation 似乎没有做任何事情,而在 setFrameRotation 中,我似乎无法弄清楚原点在哪里,所以我可以适当地翻译。

它似乎在移动。当我调整窗口大小时,它会放置图像(或其中的一部分,我似乎也有一个奇怪的剪辑问题),当我滚动时,它会跳转到不同的(并不总是相同的)位置。

这对任何人都有意义吗?

谢谢

0 投票
1 回答
1472 浏览

objective-c - 如何有效地分配 NSStatusItem 图像和替代图像?

假设我有这样的代码......

我还想为状态项设置动画,因此我创建了 6 个“更新”状态项图标的变体,并将其循环到 NSTimer 上,目标方法与上述类似。问题是:

  1. 如何有效地分配图像?例如,如果我使用保留/预加载的 NSImage 可以吗?
  2. 有没有办法以更有效的方式为状态项设置动画?我不知道任何核心动画的东西,所以请多多包涵。
0 投票
3 回答
4024 浏览

objective-c - 使用或不使用 NSAffineTransform 旋转 NSImage

我在 NSView 的子类上绘制了一个 NSImage。在上一个问题中,有人帮我把它画在左上角。现在,我希望能够旋转图像。我有一个增加旋转变​​量 %4 的按钮,然后我将其乘以 -90 以找到旋转角度。然后我使用 NSAffineTransform 旋转图像,并将其转换回屏幕上。但是,它似乎并没有按照我期望的方式工作。我有两个问题。

1)当我旋转时,图像中不在前一帧的区域中的部分被正确绘制。然而,先前存在的药水仍然是原始图像。这意味着经过几次旋转后,原始直立图像有一个正方形,然后在旋转图像的下方或左侧有一个矩形。

2)当我重新调整窗口大小时,图像会以原始的直立方向(不应该)重新绘制(应该如此)。

基本上,我得出的结论是 NSAffineTransform 不像我认为的那样工作。还有其他方法可以旋转(和平移)图像吗?谢谢

大代码块:(“WORKS”和“end works”之间的代码是用于绘制图像的工作代码。它来自我之前的问题)。

[旧代码已删除,用新代码替换较低]

谢谢

编辑:多一点研究发现,我可以旋转视图,而不是做 NSAffineTtransform。这似乎效果更好。但是,我无法让翻译工作正常。下面是新代码(为了节省空间,删除了原始代码)

0 投票
1 回答
1468 浏览

cocoa - 创建一个填充的、居中的、缩放的 NSImage

我正在使用 NSImageCell 将基于任意大小图像的固定大小图标放入 NSOutlineView 中。

NSImageCell 会很好地缩小图像,但我找不到在缩放图像周围添加填充的方法。如果没有填充,这些行在我看来很难看。

我解决此问题的第一步是创建一个恒定大小的新图像,为其填充边界,然后使用 drawInRect:fromRect:operation:fraction: 绘制原始图标的缩小版本。

这适用于方形图像。我猜想在 NSImage 上有一个方便的方法可以在给定的矩形中绘制一个居中的、以恒定纵横比缩放的图像版本,但我找不到它。

显然我可以计算出与原始图像具有相同纵横比的适当矩形,但我宁愿不重新发明轮子......

0 投票
2 回答
1035 浏览

objective-c - 在 NSImage 中处理多页图像

我正在开发一个图像查看器应用程序 (OSX),目前它可以加载和查看图像,但我需要能够查看多页 PDF 和 TIFF。我会有下一页/上一页按钮等。

现在,对于 PDF,我希望使用 NSPDFImageRep。这将让我设置当前页面并绘制当前页面等。

但是,我没有看到 NSTIFFImageRep,并且 NSImageRep 类似乎没有任何处理页面的方法......

ETA(关于我的问题的更多细节):如何使用多页 TIFF?在 C 语言中,我使用了 CGImageSource 来获取第 n 页。我在目标 C 中看不到 TIFF 的等价物。

谢谢。

0 投票
2 回答
561 浏览

objective-c - NSBitmapImageRep 和多页 TIFF

我有一个可以打开 TIFF 文档并显示它们的程序。我正在使用 setFlipped:YES。

如果我只是处理单页图像文件,我可以

而且,除了被翻转的视图之外,似乎正确地绘制了图像。

但是,由于某种原因,设置图像的翻转似乎不会影响单个表示的翻转。

这是相关的,因为多页 TIFF 的多个图像似乎显示为同一图像的不同“表示”。所以,如果我只画 IMAGE,它就会翻转,但如果我画一个特定的表示,它就不会翻转。我似乎也无法弄清楚如何选择哪个表示是绘制 NSImage 时绘制的默认表示。

谢谢。

0 投票
2 回答
268 浏览

objective-c - 如何避免 NSCachedImageRep

我正在使用来自 PDF 的 NSImage。当我最初创建图像时,它只有一个 NSImageRep,即 NSPDFImageRep。这很好。我可以使用它。我可以找出它有多少页,然后转到指定的页面,然后绘制它等等。

问题是,我一转身,它就变成了一个 NSCachedImageRep,它似乎没有多个页面。现在,如果我将 PDFImageRep 保存在一个单独的变量中,它会被跟踪,但它不再与图像相关联,所以当我绘制图像时,它仍然在同一页面上。

我错过了什么?

谢谢。

0 投票
2 回答
1089 浏览

objective-c - NSImageRep 混乱

我有一个来自 PDF 的 NSImage,所以它有一个 NSPDFImageRep 类型的表示。我做了一个图像 setDataRetained:YES; 以确保它仍然是 NSPDFImageRep。后来想换个页面,所以得到rep,设置当前页面。这可以。

问题是当我绘制图像时,只有第一页出来。

我的印象是,当我绘制一个 NSImage 时,它​​会选择一个表示,然后绘制该表示。现在,图像只有一个代表,所以这就是正在绘制的那个,那就是 PDFrep。那么,为什么当我绘制图像时,它没有绘制正确的页面?

但是,当我绘制表示本身时,我得到了正确的页面。

我错过了什么?

0 投票
3 回答
8813 浏览

cocoa - 如何为我的应用程序加载图标的 NSImage 表示?

我为我的 Cocoa 应用程序设置了一个自定义图标文件 (MyApp.icns)。如何NSImage从我的应用程序中访问图标的表示?

像下面这样的东西是完美的:

但我敢肯定这并不容易:)

当然,我可以获取图标文件的路径,如下所示:

但在我看来,应该有某种标准方法来访问应用程序图标文件,而不是通过名称调用它,因为名称可能会改变。

这样做的正确方法是什么?