【问题标题】:How to draw within constraints with Objective-C如何使用 Objective-C 在约束内绘图
【发布时间】: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


    【解决方案1】:

    您可以尝试使用 CGPath 逻辑将路径设为对象,然后使用 CGPathContainsPoint 来评估触摸是否在路径上。

    【讨论】:

    • 感谢 JS!我让它工作了,最后不得不把一大堆数学放进去:)
    猜你喜欢
    • 2014-07-09
    • 2014-08-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-01-30
    • 1970-01-01
    相关资源
    最近更新 更多