首页 文章

将鼠标光标限制为直线

提问于
浏览
0

我想知道是否可以准确地将鼠标光标限制在一条线上 . 一般的想法是,我想创建一个标尺/法国曲线应用程序,我可以拖出一条线,并使其像我想要的bezier点弯曲,然后按住一个热键限制我的鼠标,所以我可以画与wacom平板电脑在photoshop中类似的一行 .

到目前为止我尝试的是以下内容 . 我现在正用对角线测试它 . 虽然它似乎正确地将我的鼠标限制在线上,但是当我在photoshop中绘制一条线时,看起来在将事件“捕捉”到我的对角线的事件之间会发送鼠标事件 . 例如,如果我将鼠标快速向上移动到右侧,鼠标将向上移动并向右移动一个事件循环,然后快速回到我的对角线 . 这显然不适用于绘画目的 . 是否有一些较低级别的鼠标接口,我可以利用它来拦截所有鼠标事件,并可能阻止它们被发送到其他应用程序之前被分派 .

[NSEvent addGlobalMonitorForEventsMatchingMask:NSMouseMovedMask handler:^(NSEvent * mouseEvent) {
    [self mouseMoved:mouseEvent];
}];
[NSEvent addGlobalMonitorForEventsMatchingMask:NSLeftMouseDraggedMask handler:^(NSEvent * mouseEvent) {
    [self mouseMoved:mouseEvent];
}];


- (void)mouseMoved:(NSEvent *)evt {
    NSLog(@"Mouse moved: %@", NSStringFromPoint([evt locationInWindow]));

    NSPoint mousePos = [evt locationInWindow];

    CGSetLocalEventsSuppressionInterval(0.0f);
    CGWarpMouseCursorPosition(CGPointMake(mousePos.x, mousePos.x));
}

1 回答

相关问题