【问题标题】:How could I get mouse click coordinates using Swift on MacOS?如何在 MacOS 上使用 Swift 获取鼠标点击坐标?
【发布时间】:2017-12-12 21:08:43
【问题描述】:

我试图找出如何获取鼠标点击坐标来绘制一条线。我想点击两次(第一个和第二个点)并创建一条线。

我分析了很多代码,但它们都很大(例如,我喜欢这种方式https://stackoverflow.com/a/47496766/9058168)。

我希望在 Swift 中画线并不困难。我可以键入另一个具有鼠标单击坐标而不是数字坐标的变量(查看下面的代码)吗?如果您的答案是正确的,如何编码?请帮帮我,让它更简单。

import Cocoa

class DrawLine: NSView {
    override func draw(_ dirtyRect: NSRect) {
    NSBezierPath.strokeLine(from: CGPoint(x: 20, y: 20), to: CGPoint(x: 0, y: 100))
    } 
}

【问题讨论】:

    标签: swift macos coordinates line draw


    【解决方案1】:

    监听鼠标按下事件并使用它来设置开始位置和结束位置来绘制路径。

    import Cocoa
    
    class DrawLine: NSView {
        var startPoint:NSPoint?
        var endPoint:NSPoint?
        override func mouseDown(with event: NSEvent){
            if startPoint == nil || self.endPoint != nil{
               self.startPoint = event.locationInWindow
            } else {
              self.endPoint = event.locationInWindow
              self.needsDisplay = true
            }
        }
        override func draw(_ dirtyRect: NSRect) {
            if let theStart = startPoint, let theEnd = endPoint{
               NSBezierPath.strokeLine(from: theStart, to: theEnd)
            }
        }
    }
    

    【讨论】:

    • @LeoDabus “用户不知道发生了什么”是什么意思?用户需要什么指示?
    • 这是用户体验的问题。与解决方案或问题无关。
    • 您的代码正在运行,但我无法画线。我点了两下,这条线没有出现。也许我做错了什么..
    • @DevidOtladka 是否在您通过明确提供起点和终点进行绘制时出现?如果不是,您应该正确设置视图的框架和笔触颜色。
    • 我应该设置什么?我在 ImageView 上画画。出现坐标线。但是当我尝试使用此代码时,结果是否定的。我试图准确地确定起点和终点。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-02-10
    • 1970-01-01
    • 2015-11-03
    • 1970-01-01
    • 2015-06-17
    相关资源
    最近更新 更多