【发布时间】:2011-12-06 22:01:38
【问题描述】:
我是 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 写出一些(因为我更熟悉它),但我仍然不确定我是否采取了正确的步骤。
静态双 ERROR_BOUNDS= 0.0; double dRes = lines.distanceToX(point.location.x, point.location.y);
if (dRes>= ERROR_BOUNDS)
{
我真的遇到了这个问题,如果有人需要它来澄清任何事情,我会发布更多代码。任何帮助将不胜感激。
【问题讨论】:
标签: ios drawing constraints drawrect cgcontext