2013-04-29 5 views
0

내 프로그램에서 을 사용하여 NSBezierPath을 사용하여 일부 모양을 그립니다. 창 크기를 조정할 때를 제외하고 모든 것이 작동하고 멋지게 보입니다.NSBezierPath를 windowResize의 NSView에 상대적으로 유지하도록합니다.

초기 그림은

Initial drawing

창 누군가가 내가 초기 위치에 고정되는이 광장을 방지하기 위해 사용한다 알고 있나요 Window resize

크기를 조정하지만, 그것을 만들 초기 눈금을 기준으로 다시 조정하십시오.

도움을 주시면 감사하겠습니다.

+0

autolayout을 사용하고 있습니까? –

+0

그 모양을 그리는 중 ... 인터페이스 빌더에 내장되어 있지 않습니다. –

+0

예, 코드로 autolayout을 사용할 수 있습니다! –

답변

1

drawRect에서 그림을 그리는 경우 대답은 아니오입니다. 매 번 경로를 재구성하고 위치를 재조정해야합니다. 다음 행에 따라 수행 할 수있는 작업은 무엇입니까?

- (void) drawRect:(NSRect)dirtyRect 
{ 
    // Assuming that _relPos with x and y having values bewteen 0 and 1. 
    // To keep the square in the middle of the view you would set _relPos to 
    // CGPointMake(0.5, 0.5). 

    CGRect bounds = self.bounds; 

    CGRect rect; 
    rect.size.width = 100; 
    rect.size.height = 100; 
    rect.origin.x = bounds.origin.x + bounds.size.width * _relPos.x - rect.size.width /2; 
    rect.origin.y = bounds.origin.y + bounds.size.height * _relPos.y - rect.size.height/2; 

    NSBezierPath *path = [NSBezierPath bezierPathWithRect:rect]; 
    [[NSColor redColor] set]; 
    path.lineWidth = 2; 
    [path stroke]; 
} 
+0

예 ...이 문제에 대해 생각해 보았습니다. 모양을 다시 계산하고 다시 그리기 위해 약간의 알 고를 써야합니다. ..고맙습니다! –