objective-c - 如何在 OS X 上的 Xcode 中更改鼠标光标?

标签 objective-c xcode macos

我在OS X上制作了一个绘画程序。当我更改为画笔功能时,我希望将鼠标光标更改为矩形光标。矩形的大小就是画笔的大小。如果画笔大小为 10px,则鼠标光标将为 10X10px 矩形。

如何通过 Objective-C 做到这一点?如何绘制光标并设置它?非常感谢。

最佳答案

您需要使用 NSCursor 来创建自定义光标。光标需要一个 NSImage 作为其外观,并需要一个 NSPoint 作为光标热点。

NSImage 可以从图像加载或手动创建。您可以将其添加到 ViewController 的 viewDidLoad 方法中。将光标存储为该类的属性。当然也可以在 NSView 子类本身中执行此操作(例如在 awakeFromNib 中):

NSSize cursorSize = NSMakeSize(10, 10);

NSImage *cursorImg = [[NSImage alloc] initWithSize: cursorSize];
// Draw any color on the image
[cursorImg lockFocus];
[[NSColor blackColor] setFill];
[NSBezierPath fillRect:NSMakeRect(0, 0, cursorSize.width, cursorSize.height)];
[cursorImg unlockFocus];
cursor = [[NSCursor alloc] initWithImage:cursorImg hotSpot:NSMakePoint(cursorSize.width/2.0, cursorSize.height/2.0)];

// you now have a cursor. You must set it (e.g. in mouseEntered-method of a view:

[cursor setOnMouseEntered:YES];
[self.view addTrackingRect:self.view.bounds owner:cursor userData:NULL assumeInside:YES];

您可以通过调整 NSColorNSSizecursorSize 来更改光标的颜色和大小。当您使用完光标后(最晚在 NSViewController 解除分配时),请记住在 NSView 上调用 removeTrackingRect

请参阅苹果文档 NSCursor了解如何在 Cocoa 中使用光标。

关于objective-c - 如何在 OS X 上的 Xcode 中更改鼠标光标?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26904645/

相关文章:

ios - NSFetchResultsController 显示虚假对象

objective-c - NSLayoutConstraint 的默认常量是什么?

iphone - 如何在iOS中以特定时间间隔在后台执行函数

Cocoa - 高效 View 绘制

macos - 如何在 OS X 上运行具有硬内存限制的进程?

php - 如何在 mac os x lion 上设置/安装 zend 框架? .bash_profile 在哪里设置 zf.sh 的别名?

objective-c - 如何在iOS上获取时钟闹钟信息

iphone - Objective-C - 确定哪个日期晚于格式化日期

Xcode 10.1 如何修复用户界面检查器 "Capturing User Interface"无法持续​​加载

xcode - MP4 类型的 NSURL 出现 fatal error