NSAffineTransform 메모

3774 단어 코코아
장소를 어긋나면서 반복 그리기를 하려고 한다면, NSAffineTransform에서 원점 이동하면 좋지 않을까 생각해 실장해 실패했을 때의 메모.

샘플 스크린샷은 다음과 같습니다. 왼쪽과 같은 것을 만들려고 올바르게 구현할 수 있었던 것이 중간, 착각으로 올바르게 그릴 수 없었던 것이 오른쪽.



코드 : htps : // 기주 b. 코 m / 누노 쿠키 / 아후 네 T 란 s 후 rm S dy 001

올바른 쓰기


    NSAffineTransform *trans1 = [NSAffineTransform transform];
    [trans1 translateXBy: 10 yBy: 10];

    [trans1 concat];
    [self drawLineWithColor:[NSColor redColor]];

    [trans1 concat];
    [self drawLineWithColor:[NSColor greenColor]];

     // .....

잘못된 쓰기


    NSAffineTransform *trans = [NSAffineTransform transform];

    [self drawLineWithColor:[NSColor blackColor]];

    [trans translateXBy: 10 yBy: 10];
    [trans concat];
    [self drawLineWithColor:[NSColor redColor]];

    [trans translateXBy: 10 yBy: 10];
    [trans concat];
    [self drawLineWithColor:[NSColor greenColor]];

     // .....

반성



이해한다면 그렇게 될 것입니다.
  • NSAffineTransform은 변환 행렬을 정의합니다.
  • concat 메소드는 현재 컨텍스트에 좌표 변환을 적용합니다. 감각적으로는 [[NSColor blackColor] set]에 가깝다.
  • translateXBy:yBy: 메소드는 좌표 변환의 행렬을 추가하는 것. 잘못된 예와 같이 하면, 변환 행렬 = A * A * A *.... 라고 점점 어긋남 폭이 커져 간다.
  • 좋은 웹페이지 즐겨찾기