Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/xcode/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Objective c 如何在OSX上的Xcode中更改鼠标光标?_Objective C_Xcode_Macos - Fatal编程技术网

Objective c 如何在OSX上的Xcode中更改鼠标光标?

Objective c 如何在OSX上的Xcode中更改鼠标光标?,objective-c,xcode,macos,Objective C,Xcode,Macos,我已经在OSX上制作了一个绘画程序。当我切换到画笔功能时,我希望鼠标光标变为矩形光标。矩形大小将是画笔大小。如果笔刷大小为10px,则鼠标光标将为10X10px矩形 我如何通过Objective-C做到这一点?如何绘制光标并进行设置?非常感谢。您需要使用NSCursor来创建自定义光标。光标的外观需要一个NSImage,光标热点需要一个NSPoint NSImage可以从图像加载或手动创建。您可以将其添加到ViewController的viewDidLoad方法中。将游标存储为该类的属性。当然,

我已经在OSX上制作了一个绘画程序。当我切换到画笔功能时,我希望鼠标光标变为矩形光标。矩形大小将是画笔大小。如果笔刷大小为10px,则鼠标光标将为10X10px矩形


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

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

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

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


有关如何在Cocoa中使用光标的信息,请参见apple doc。

我只想将鼠标光标更改为自定义形状。.我已将此代码复制到-(void)ApplicationIDFinishLaunching:(NSNotification*)aNotification中,但未做任何更改。鼠标光标正常。。。请帮助我,我想您必须在视图的
mouseEnter
-方法中执行此操作。我添加了此方法,但当鼠标进入窗口时,鼠标光标将丢失,我看不到鼠标…您尝试过移动鼠标吗?默认情况下,新光标将隐藏,直到鼠标移动为止。你有什么例外吗?是的,我试过移动鼠标,但它完全被隐藏了。直到我点击屏幕上的某个东西,比如XCode停止运行按钮或其他什么东西,我才能看到它。如果我不单击,即使我将其移动到停靠条上,它也不会显示。。
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];