我是Objective-C的新手,所以请原谅我。我正在创建一个iPhone应用程序,用户可以在屏幕上绘制同时跟踪字母的形状。
到目前为止,我有TouchesBegan/Moved/Ended和点/点位置绘制到屏幕上的缓冲区上。我还使用线坐标在屏幕上绘制了字母"A":- (void)drawRect:(CGRect)rect
{
//letter to draw on
CGContextRef c = UIGraphicsGetCurrentContext();
CGContextSetLineWidth(c, 12.0);
CGColorSpaceRef colorspace = CGColorSpaceCreateDeviceRGB();
CGFloat components[] = {0.0, 0.0, 1.0, 1.0};
CGColorRef color = CGColorCreate(colorspace, components);
CGContextSetStrokeColorWithColor(c, color);
CGContextSetLineCap(c, kCGLineCapRound);
CGContextSetLineJoin(c, kCGLineCapRound);
//1
CGContextMoveToPoint(c, 60, 400);
//2
CGContextAddLineToPoint(c, 160, 100);
//3
CGContextAddLineToPoint(c, 260, 400);
//4
CGContextMoveToPoint(c, 100, 280);
//5
CGContextAddLineToPoint(c, 220, 280);
CGContextStrokePath(c);
CGColorSpaceRelease(colorspace);
CGColorRelease(color);
}
我想弄清楚的下一步是如何看到用户何时已经超出了屏幕上字母的坐标(或约束)。我知道我必须求出点和直线之间的最短距离但我不知道怎么做。
我也试着用Java写出来一些(因为我更熟悉它),但我仍然不确定我是否采取了正确的步骤。
static double ERROR_BOUNDS= 0.0;double dRes = lines.distanceToX(point.location.)
x, point.location.y);
if (dRes>= ERROR_BOUNDS)
{
我真的碰到了砖墙,如果有人需要它来澄清任何事情,我会发布更多的代码。
您可以尝试使用CGPath逻辑使路径成为对象,然后使用CGPathContainsPoint来评估触摸是否在路径上