2011-12-06 59 views
0

Im對Objective-C很新,所以請耐心等待。我正在創建一個iPhone應用程序,在跟蹤字母形狀的同時在屏幕上繪製了用戶。如何在Objective-C的約束範圍內繪製Objective-C

到目前爲止,我已將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) 
{ 

伊夫真打跟這個有磚牆,如果有人需要它來澄清什麼,我會發布更多的代碼。任何幫助將非常感激。

回答

1

您可以嘗試使用CGPath邏輯將路徑作爲對象,然後使用CGPathContainsPoint來評估觸摸是否在路徑上。

+0

謝謝JS!我得到了它的工作,最終不得不把整個數學的負擔:) – PriorH