3

我正在尝试修改默认的 I 型光标图像。我正在使用[[[NSCursor IBeamCursor] image] representations],通过 CIFilter 传递每个并将其添加到新图像中。但是,生成的光标看起来好像正在渲染低分辨率图像。

高分辨率指南说:

对于自定义光标,您可以将多表示 TIFF 传递给 NSCursor 类方法initWithImage:hotSpot:

所以我希望这能奏效。此外,如果我得到-TIFFRepresentation原始图像和修改后的图像,并将它们写入磁盘,它们看起来就像具有相同大小图像的多页 TIFF 文件。我可能做错了什么?

4

3 回答 3

1

我有一个临时的解决方案:手动调用-setSize:每个图像表示,将像素高度和宽度除以屏幕的比例因子。但是,这种技术似乎不适用于多个屏幕。

于 2012-08-18T20:32:19.380 回答
1

你是对的。我整天都在调试这个,我很确定我已经搞定了。我没有做与您完全相同的事情(我的图像是从文件中加载的),但最终结果完全相同。

诀窍是将多表示图像的第一个表示设置为非视网膜大小。如果您从图像文件加载光标,则必须采取这一额外步骤来调整表示的大小以匹配。它不像您期望的那样“开箱即用”。

我已经在一台带有两台显示器的机器上进行了测试,并将窗口从视网膜显示器拖到非视网膜显示器上,它应该为光标显示高分辨率/低分辨率图像。

于 2013-10-22T20:41:01.927 回答
1

前段时间我有一个类似的问题:我的光标在 PDF 中,它总是像 1:1 大小的像素图像一样绘制,被放大了。在 NSCursor 中有一个解决方案:使用带光标缩放(或视网膜)的高分辨率光标

也许有人可以使用该技术来解决这个问题?我的猜测是创建一个大小相同但 CTM 不同的图像,将其标记为相同大小但 Retina。@jtbrandes 所做的可能将其标记为不同的尺寸和非 Retina。因此,您实际上丢失了比例因子信息。如果您在提示中创建带有 CTM 的图像,也许您可​​以将过滤后的图像绘制到其中并且它会被正确检测到。

于 2015-01-30T23:21:30.647 回答