osx – NSCursor:使用光标缩放(或视网膜)的高分辨率光标

osx – NSCursor:使用光标缩放(或视网膜)的高分辨率光标,第1张

概述在OSX中,用户可以使用辅助功能系统首选项放大鼠标光标。由于Lion(我认为)OSX将光标存储为PDF,并且能够顺利地调整它们的大小。我想要我的应用程序相同的功能,但使用PDF作为NSImage用于我的NSCursor只是放大渲染的位图当光标缩放级别大于1.0被设置。 我如何: >使用矢量图形作为我的游标,并使它们像系统光标一样正确地缩放? >检测当前光标缩放级别。 >当光标缩放级别更改时,获得通 在OSX中,用户可以使用辅助功能系统首选项放大鼠标光标。由于lion(我认为)OSX将光标存储为pdf,并且能够顺利地调整它们的大小。我想要我的应用程序相同的功能,但使用pdf作为NSImage用于我的NSCursor只是放大渲染的位图当光标缩放级别大于1.0被设置。

我如何:

>使用矢量图形作为我的游标,并使它们像系统光标一样正确地缩放?
>检测当前光标缩放级别。
>当光标缩放级别更改时,获得通知?

另外,当我的屏幕使用hidpi模式并恢复光标缩放设置时,pdf光标也很模糊,那么你们如何确定你的游标呢?

解决方法 @ kongtomorrow我刚刚得到了解决方案。这是他寄给我的片段:

NSImage *   theImage = [NSImage imagenamed: @"CURS_128.pdf"];NSImage *resultimage = [[NSImage alloc] initWithSize:[theImage size]];for (int scale = 1; scale <= 4; scale++) {    NSAffinetransform *xform = [[NSAffinetransform alloc] init];    [xform scaleBy:scale];    ID hints = @{ NSImageHintCTM: xform };    CGImageRef rasterCGImage = [theImage CGImageForProposedRect:NulL context:nil hints:hints];    NSBitmAPImageRep *rep = [[NSBitmAPImageRep alloc] initWithCGImage:rasterCGImage];    [rep setSize:[theImage size]];    [resultimage addRepresentation:rep];}NSCursor*   theCursor = [[NSCursor alloc] initWithImage: resultimage hotSpot: NSMakePoint(12,8)];[self.scrollVIEw setdocumentCursor: theCursor];

所以基本上这样做是根据原始的pdf在图像中以适当的比例因子生成几个图像表示。这适用于我,我的光标很好,顺利。

总结

以上是内存溢出为你收集整理的osx – NSCursor:使用光标缩放(或视网膜)的高分辨率光标全部内容,希望文章能够帮你解决osx – NSCursor:使用光标缩放(或视网膜)的高分辨率光标所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1035599.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-24
下一篇 2022-05-24

发表评论

登录后才能评论

评论列表(0条)

保存