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

时间:2014-11-13 08:47:53

标签: objective-c xcode macos

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

如何通过Objective-C实现这一目标?如何绘制光标并设置它?非常感谢。

1 个答案:

答案 0 :(得分:2)

您需要使用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];

您可以通过调整NSColorNSSize cursorSize来更改光标的颜色和大小。当您完成游标时(最迟在removeTrackingRect解除分配时),请务必在NSView上致电NSViewController

有关如何使用Cocoa中的游标,请参阅apple NSCursor