1

マウスカーソルを線に正確に拘束できるかどうか疑問に思っています。一般的なアイデアは、線をドラッグしてベジェポイントで好きなだけ曲線を描くことができる定規/フレンチカーブアプリを作成し、ホットキーを押したままマウスをそれに拘束してペイントできるようにすることですワコムタブレットを使ったフォトショップの同様のライン。

これまでに試したことは次のとおりです。私は今、対角線でそれをテストしています。マウスを線に適切に拘束しているように見えますが、Photoshop で線を描くと、カーソルを対角線に「スナップ」するイベントの間にマウス イベントがディスパッチされているように見えます。たとえば、マウスを非常に速く右上に移動すると、マウスは 1 つのイベント ループで右上に移動し、対角線に戻ります。これは明らかに塗装目的では機能しません。すべてのマウスイベントを傍受し、他のアプリケーションに送信される前にそれらがディスパッチされるのを防ぐために利用できる低レベルのマウスインターフェイスはありますか?

[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));
}
4

1 に答える 1