我正在尝试修改默认的I-波束光标图像。我正在使用[[[NSCursor IBeamCursor] image] representations]
,将每个CIFilter传递给一个CIFilter,并将其添加到一个新映像中。然而,产生的光标看起来像是在渲染低分辨率的图像.。
高分辨率指南说:
对于自定义游标,可以将多表示TIFF传递给NSCursor类方法
initWithImage:hotSpot:
。
所以我希望这能奏效。此外,如果我获得原始图像和修改图像的-TIFFRepresentation
,并将它们写入磁盘,它们看起来都像具有相同大小图像的多页TIFF文件。我做错什么了?
发布于 2012-08-18 20:32:19
我有一个临时的解决方案:在每个图像表示上手动调用-setSize:
,将像素的高度和宽度除以屏幕的比例因子。然而,这种技术似乎无法在多个屏幕上理想地工作。
发布于 2013-10-22 20:41:01
你说得对。我已经调试了一整天了,我很确定我已经把它搞定了。我并不是在做和你完全一样的事情(我的图像是从一个文件中加载的),但是最终结果是完全一样的。
诀窍是将多个表示图像的第一次表示设置为非视网膜大小。如果要从图像文件中加载游标,则必须采取此额外步骤来调整表示的大小以匹配。它不像你所期望的那样“开箱即用”。
我在一台带有两台显示器的机器上测试了这一点,并将窗口从视网膜显示器拖动到非视网膜显示器,显示光标的高/低分辨率图像。
发布于 2015-01-30 23:21:30
不久前,我遇到了一个类似的问题:我的光标是PDF格式的,它总是像一个1:1大小的像素图像一样被放大。在NSCursor:使用具有光标缩放(或视网膜)的高分辨率游标中有一个解决方案。
也许有人能用这个技巧来解决这个问题?我的猜测是创建一个大小相同的图像,但不同的CTM将其标记为相同的大小,但Retina。@jtbrandes正在做的事情可能标志着它的尺寸和非Retina的不同。所以你实际上失去了比例因子信息。如果您在提示中创建了一个带有CTM的图像,也许您可以将过滤过的图像绘制到其中,这样就可以正确地检测到它。
https://stackoverflow.com/questions/12021812
复制相似问题