gpt4 book ai didi

ios - 在绘图应用程序上绘制第一个点?

转载 作者:行者123 更新时间:2023-11-28 11:07:54 25 4
gpt4 key购买 nike

当我想在 Canvas 上画一个点时,它没有出现。即使我进行了一次触摸,程序也好像没有收到第一个 CGPoint 值。只有当我移动手指时,点值才会出现(例如:(190.0, 375.5), (135, 234), ...)

DV.swift

class DV: UIView {
var lines: [Line] = []
var firstPoint: CGPoint!
var lastPoint: CGPoint!

required init?(coder aDecoder: NSCoder){
super.init(coder: aDecoder)!
}

override func touchesBegan(touches: Set<UITouch>, withEvent event: UIEvent?) {
lastPoint = touches.first!.locationInView(self)
}
override func touchesMoved(touches: Set<UITouch>, withEvent event: UIEvent?) {
var newPoint = touches.first!.locationInView(self)

lines.append(Line(start: lastPoint, end: newPoint))
lastPoint = newPoint

self.setNeedsDisplay()
}
override func drawRect(rect: CGRect) {
var context = UIGraphicsGetCurrentContext()
CGContextBeginPath(context)
// print("fine") starts at beginning only

for line in lines {

CGContextMoveToPoint(context,line.start.x , line.start.y)
CGContextAddLineToPoint(context, line.end.x, line.end.y)

}
CGContextSetRGBFillColor(context, 0, 0, 0, 1)
CGContextSetLineCap(context, .Round)
CGContextSetLineWidth(context, 5)
CGContextStrokePath(context)
}
}

Line.swift // My line initializer

class Line {
var start: CGPoint
var end: CGPoint

init(start _start: CGPoint, end _end: CGPoint) {
start = _start
end = _end
}
}

最佳答案

你只使用了 touchesBegantouchesMoved,而不是 touchesEnded,所以如果触摸没有移动然后结束你基本上忽略了它。您需要实现 touchesEnded 以提交绘图更改并绘制它们。

关于ios - 在绘图应用程序上绘制第一个点?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36699138/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com