2011-01-24 6 views
8

사용자가 선을 그릴 수있을 때 앱을 개발하고 싶습니다. 그러나 직선을 그리지 않고 사용자가 그리면 선을 표시하려고합니다. 사용자가 점 A에서 점 B로 갈 때 나는 선을 똑 바르게하고 싶습니다 (사용자가 이것을 원할 경우).iPhone/iPad에서 선 그리기

이 작업을 수행하려면 내보기를 0,0 (왼쪽 위)부터 320,480 (아이폰) 및 768,1024 (iPad) (오른쪽 아래)로 그리드로 변경하고 싶습니다.

이 질문의 경우 점 A가 10,10이고 점 B가 100,100입니다.

내 질문 :
-이 그리드는 어떻게 만듭니 까?
-이 점수는 어떻게 작성합니까?
- 줄 바꿈하지 않고 어떻게 그려야합니까?
- 직선을 그리려면 어떻게해야합니까?

제 문제는 "일반"UI 응용 프로그램을 만드는 것에 익숙하다는 것입니다. 나는 Open-GL ect에 익숙하지 않다.

누군가가이 문제를 해결할 수 있기를 바랍니다.

안부,
폴 Peelen

+0

"교정 문제"를 별도의 질문으로 마무리하는 것이 좋습니다. – genpfault

+0

좋아요, 제가 1 단계로 직선으로 시작하고 2 단계에서 비 직선으로 이동한다는 의미입니까? –

+0

당신은 이것을'opengl-es'라고 태그했습니다 - 당신은 그걸로 드로잉을하고 있습니까, 아니면 "네이티브"드로잉 시스템 인 Quartz로할까요? –

답변

17

당신은 당신의 UIView를 서브 클래스와 - (void)drawRect:(CGRect)rect 메소드를 오버라이드 (override).

거기에서 당신은 그래픽 컨텍스트 잡아 :

CGContextRef context = UIGraphicsGetCurrentContext(); 

을 그리고 당신은 만드는 데 사용하는 코어 그래픽처럼 호출

CGContextRef context = UIGraphicsGetCurrentContext(); 
CGContextBeginPath (context); 
for (k = 0; k < count; k += 2) { 
    CGContextMoveToPoint(context, s[k].x, s[k].y); 
    CGContextAddLineToPoint(context, s[k+1].x, s[k+1].y); 
} 
CGContextStrokePath(context); 

모든 세부 사항에 대한 석영 2D 프로그래밍 가이드를 검색합니다.

+0

신난다, 나는 볼 것이다. –

+0

나는 똑같은, 모든 예제 또는 튜토리얼로 시작하고있다 ...이 코드를 사용하는 방법을 알아낼 수 없다 .. 어떤 도움 감사 감사 – Dave

+0

위의 코드를 사용하는 방법 중 하나를 도와주세요? –

0

당신은 직선을 드래그 할 수 있습니다 때 사용자가 드래그 그것을 시작 지점 UIBezierPath 및 CAShapeLayer를 사용하여 라인을 그릴 종료에 따라이 당신의 목표를 달성하는 데 도움이 될 것입니다

- (void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event 
{ 
    UITouch *touch = [[event allTouches] anyObject]; 
    startingPoint = [touch locationInView:baseHolderView]; 

} 
- (void)touchesEnded:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event 
{ 
    UITouch *touch = [touches anyObject]; 
    endingPoint = [touch locationInView:baseHolderView]; 
    [self makeLineLayer:baseHolderView.layer lineFromPointA:startingPoint toPointB:endingPoint]; 
} 

-(void)makeLineLayer:(CALayer *)layer lineFromPointA:(CGPoint)pointA toPointB:(CGPoint)pointB 
{ 
    CAShapeLayer *line = [CAShapeLayer layer]; 
    UIBezierPath *linePath=[UIBezierPath bezierPath]; 
    [linePath moveToPoint: pointA]; 
    [linePath addLineToPoint:pointB]; 
    line.path=linePath.CGPath; 
    line.fillColor = nil; 
    line.opacity = 2.0; 
    line.strokeColor = [UIColor blackColor].CGColor; 
    [layer addSublayer:line]; 
} 

희망을.